home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / docs / protocol / std / std3.txt < prev    next >
Text File  |  1997-09-26  |  529KB  |  12,625 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6. Network Working Group                    Internet Engineering Task Force
  7. Request for Comments: 1122                             R. Braden, Editor
  8.                                                             October 1989
  9.  
  10.  
  11.         Requirements for Internet Hosts -- Communication Layers
  12.  
  13.  
  14. Status of This Memo
  15.  
  16.    This RFC is an official specification for the Internet community.  It
  17.    incorporates by reference, amends, corrects, and supplements the
  18.    primary protocol standards documents relating to hosts.  Distribution
  19.    of this document is unlimited.
  20.  
  21. Summary
  22.  
  23.    This is one RFC of a pair that defines and discusses the requirements
  24.    for Internet host software.  This RFC covers the communications
  25.    protocol layers: link layer, IP layer, and transport layer; its
  26.    companion RFC-1123 covers the application and support protocols.
  27.  
  28.  
  29.  
  30.                            Table of Contents
  31.  
  32.  
  33.  
  34.  
  35.    1.  INTRODUCTION ...............................................    5
  36.       1.1  The Internet Architecture ..............................    6
  37.          1.1.1  Internet Hosts ....................................    6
  38.          1.1.2  Architectural Assumptions .........................    7
  39.          1.1.3  Internet Protocol Suite ...........................    8
  40.          1.1.4  Embedded Gateway Code .............................   10
  41.       1.2  General Considerations .................................   12
  42.          1.2.1  Continuing Internet Evolution .....................   12
  43.          1.2.2  Robustness Principle ..............................   12
  44.          1.2.3  Error Logging .....................................   13
  45.          1.2.4  Configuration .....................................   14
  46.       1.3  Reading this Document ..................................   15
  47.          1.3.1  Organization ......................................   15
  48.          1.3.2  Requirements ......................................   16
  49.          1.3.3  Terminology .......................................   17
  50.       1.4  Acknowledgments ........................................   20
  51.  
  52.    2. LINK LAYER ..................................................   21
  53.       2.1  INTRODUCTION ...........................................   21
  54.  
  55.  
  56.  
  57. Internet Engineering Task Force                                 [Page 1]
  58.  
  59.  
  60.  
  61.  
  62. RFC1122                       INTRODUCTION                  October 1989
  63.  
  64.  
  65.       2.2  PROTOCOL WALK-THROUGH ..................................   21
  66.       2.3  SPECIFIC ISSUES ........................................   21
  67.          2.3.1  Trailer Protocol Negotiation ......................   21
  68.          2.3.2  Address Resolution Protocol -- ARP ................   22
  69.             2.3.2.1  ARP Cache Validation .........................   22
  70.             2.3.2.2  ARP Packet Queue .............................   24
  71.          2.3.3  Ethernet and IEEE 802 Encapsulation ...............   24
  72.       2.4  LINK/INTERNET LAYER INTERFACE ..........................   25
  73.       2.5  LINK LAYER REQUIREMENTS SUMMARY ........................   26
  74.  
  75.    3. INTERNET LAYER PROTOCOLS ....................................   27
  76.       3.1 INTRODUCTION ............................................   27
  77.       3.2  PROTOCOL WALK-THROUGH ..................................   29
  78.          3.2.1 Internet Protocol -- IP ............................   29
  79.             3.2.1.1  Version Number ...............................   29
  80.             3.2.1.2  Checksum .....................................   29
  81.             3.2.1.3  Addressing ...................................   29
  82.             3.2.1.4  Fragmentation and Reassembly .................   32
  83.             3.2.1.5  Identification ...............................   32
  84.             3.2.1.6  Type-of-Service ..............................   33
  85.             3.2.1.7  Time-to-Live .................................   34
  86.             3.2.1.8  Options ......................................   35
  87.          3.2.2 Internet Control Message Protocol -- ICMP ..........   38
  88.             3.2.2.1  Destination Unreachable ......................   39
  89.             3.2.2.2  Redirect .....................................   40
  90.             3.2.2.3  Source Quench ................................   41
  91.             3.2.2.4  Time Exceeded ................................   41
  92.             3.2.2.5  Parameter Problem ............................   42
  93.             3.2.2.6  Echo Request/Reply ...........................   42
  94.             3.2.2.7  Information Request/Reply ....................   43
  95.             3.2.2.8  Timestamp and Timestamp Reply ................   43
  96.             3.2.2.9  Address Mask Request/Reply ...................   45
  97.          3.2.3  Internet Group Management Protocol IGMP ...........   47
  98.       3.3  SPECIFIC ISSUES ........................................   47
  99.          3.3.1  Routing Outbound Datagrams ........................   47
  100.             3.3.1.1  Local/Remote Decision ........................   47
  101.             3.3.1.2  Gateway Selection ............................   48
  102.             3.3.1.3  Route Cache ..................................   49
  103.             3.3.1.4  Dead Gateway Detection .......................   51
  104.             3.3.1.5  New Gateway Selection ........................   55
  105.             3.3.1.6  Initialization ...............................   56
  106.          3.3.2  Reassembly ........................................   56
  107.          3.3.3  Fragmentation .....................................   58
  108.          3.3.4  Local Multihoming .................................   60
  109.             3.3.4.1  Introduction .................................   60
  110.             3.3.4.2  Multihoming Requirements .....................   61
  111.             3.3.4.3  Choosing a Source Address ....................   64
  112.          3.3.5  Source Route Forwarding ...........................   65
  113.  
  114.  
  115.  
  116. Internet Engineering Task Force                                 [Page 2]
  117.  
  118.  
  119.  
  120.  
  121. RFC1122                       INTRODUCTION                  October 1989
  122.  
  123.  
  124.          3.3.6  Broadcasts ........................................   66
  125.          3.3.7  IP Multicasting ...................................   67
  126.          3.3.8  Error Reporting ...................................   69
  127.       3.4  INTERNET/TRANSPORT LAYER INTERFACE .....................   69
  128.       3.5  INTERNET LAYER REQUIREMENTS SUMMARY ....................   72
  129.  
  130.    4. TRANSPORT PROTOCOLS .........................................   77
  131.       4.1  USER DATAGRAM PROTOCOL -- UDP ..........................   77
  132.          4.1.1  INTRODUCTION ......................................   77
  133.          4.1.2  PROTOCOL WALK-THROUGH .............................   77
  134.          4.1.3  SPECIFIC ISSUES ...................................   77
  135.             4.1.3.1  Ports ........................................   77
  136.             4.1.3.2  IP Options ...................................   77
  137.             4.1.3.3  ICMP Messages ................................   78
  138.             4.1.3.4  UDP Checksums ................................   78
  139.             4.1.3.5  UDP Multihoming ..............................   79
  140.             4.1.3.6  Invalid Addresses ............................   79
  141.          4.1.4  UDP/APPLICATION LAYER INTERFACE ...................   79
  142.          4.1.5  UDP REQUIREMENTS SUMMARY ..........................   80
  143.       4.2  TRANSMISSION CONTROL PROTOCOL -- TCP ...................   82
  144.          4.2.1  INTRODUCTION ......................................   82
  145.          4.2.2  PROTOCOL WALK-THROUGH .............................   82
  146.             4.2.2.1  Well-Known Ports .............................   82
  147.             4.2.2.2  Use of Push ..................................   82
  148.             4.2.2.3  Window Size ..................................   83
  149.             4.2.2.4  Urgent Pointer ...............................   84
  150.             4.2.2.5  TCP Options ..................................   85
  151.             4.2.2.6  Maximum Segment Size Option ..................   85
  152.             4.2.2.7  TCP Checksum .................................   86
  153.             4.2.2.8  TCP Connection State Diagram .................   86
  154.             4.2.2.9  Initial Sequence Number Selection ............   87
  155.             4.2.2.10  Simultaneous Open Attempts ..................   87
  156.             4.2.2.11  Recovery from Old Duplicate SYN .............   87
  157.             4.2.2.12  RST Segment .................................   87
  158.             4.2.2.13  Closing a Connection ........................   87
  159.             4.2.2.14  Data Communication ..........................   89
  160.             4.2.2.15  Retransmission Timeout ......................   90
  161.             4.2.2.16  Managing the Window .........................   91
  162.             4.2.2.17  Probing Zero Windows ........................   92
  163.             4.2.2.18  Passive OPEN Calls ..........................   92
  164.             4.2.2.19  Time to Live ................................   93
  165.             4.2.2.20  Event Processing ............................   93
  166.             4.2.2.21  Acknowledging Queued Segments ...............   94
  167.          4.2.3  SPECIFIC ISSUES ...................................   95
  168.             4.2.3.1  Retransmission Timeout Calculation ...........   95
  169.             4.2.3.2  When to Send an ACK Segment ..................   96
  170.             4.2.3.3  When to Send a Window Update .................   97
  171.             4.2.3.4  When to Send Data ............................   98
  172.  
  173.  
  174.  
  175. Internet Engineering Task Force                                 [Page 3]
  176.  
  177.  
  178.  
  179.  
  180. RFC1122                       INTRODUCTION                  October 1989
  181.  
  182.  
  183.             4.2.3.5  TCP Connection Failures ......................  100
  184.             4.2.3.6  TCP Keep-Alives ..............................  101
  185.             4.2.3.7  TCP Multihoming ..............................  103
  186.             4.2.3.8  IP Options ...................................  103
  187.             4.2.3.9  ICMP Messages ................................  103
  188.             4.2.3.10  Remote Address Validation ...................  104
  189.             4.2.3.11  TCP Traffic Patterns ........................  104
  190.             4.2.3.12  Efficiency ..................................  105
  191.          4.2.4  TCP/APPLICATION LAYER INTERFACE ...................  106
  192.             4.2.4.1  Asynchronous Reports .........................  106
  193.             4.2.4.2  Type-of-Service ..............................  107
  194.             4.2.4.3  Flush Call ...................................  107
  195.             4.2.4.4  Multihoming ..................................  108
  196.          4.2.5  TCP REQUIREMENT SUMMARY ...........................  108
  197.  
  198.    5.  REFERENCES .................................................  112
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234. Internet Engineering Task Force                                 [Page 4]
  235.  
  236.  
  237.  
  238.  
  239. RFC1122                       INTRODUCTION                  October 1989
  240.  
  241.  
  242. 1.  INTRODUCTION
  243.  
  244.    This document is one of a pair that defines and discusses the
  245.    requirements for host system implementations of the Internet protocol
  246.    suite.  This RFC covers the communication protocol layers:  link
  247.    layer, IP layer, and transport layer.  Its companion RFC,
  248.    "Requirements for Internet Hosts -- Application and Support"
  249.    [INTRO:1], covers the application layer protocols.  This document
  250.    should also be read in conjunction with "Requirements for Internet
  251.    Gateways" [INTRO:2].
  252.  
  253.    These documents are intended to provide guidance for vendors,
  254.    implementors, and users of Internet communication software.  They
  255.    represent the consensus of a large body of technical experience and
  256.    wisdom, contributed by the members of the Internet research and
  257.    vendor communities.
  258.  
  259.    This RFC enumerates standard protocols that a host connected to the
  260.    Internet must use, and it incorporates by reference the RFCs and
  261.    other documents describing the current specifications for these
  262.    protocols.  It corrects errors in the referenced documents and adds
  263.    additional discussion and guidance for an implementor.
  264.  
  265.    For each protocol, this document also contains an explicit set of
  266.    requirements, recommendations, and options.  The reader must
  267.    understand that the list of requirements in this document is
  268.    incomplete by itself; the complete set of requirements for an
  269.    Internet host is primarily defined in the standard protocol
  270.    specification documents, with the corrections, amendments, and
  271.    supplements contained in this RFC.
  272.  
  273.    A good-faith implementation of the protocols that was produced after
  274.    careful reading of the RFC's and with some interaction with the
  275.    Internet technical community, and that followed good communications
  276.    software engineering practices, should differ from the requirements
  277.    of this document in only minor ways.  Thus, in many cases, the
  278.    "requirements" in this RFC are already stated or implied in the
  279.    standard protocol documents, so that their inclusion here is, in a
  280.    sense, redundant.  However, they were included because some past
  281.    implementation has made the wrong choice, causing problems of
  282.    interoperability, performance, and/or robustness.
  283.  
  284.    This document includes discussion and explanation of many of the
  285.    requirements and recommendations.  A simple list of requirements
  286.    would be dangerous, because:
  287.  
  288.    o    Some required features are more important than others, and some
  289.         features are optional.
  290.  
  291.  
  292.  
  293. Internet Engineering Task Force                                 [Page 5]
  294.  
  295.  
  296.  
  297.  
  298. RFC1122                       INTRODUCTION                  October 1989
  299.  
  300.  
  301.    o    There may be valid reasons why particular vendor products that
  302.         are designed for restricted contexts might choose to use
  303.         different specifications.
  304.  
  305.    However, the specifications of this document must be followed to meet
  306.    the general goal of arbitrary host interoperation across the
  307.    diversity and complexity of the Internet system.  Although most
  308.    current implementations fail to meet these requirements in various
  309.    ways, some minor and some major, this specification is the ideal
  310.    towards which we need to move.
  311.  
  312.    These requirements are based on the current level of Internet
  313.    architecture.  This document will be updated as required to provide
  314.    additional clarifications or to include additional information in
  315.    those areas in which specifications are still evolving.
  316.  
  317.    This introductory section begins with a brief overview of the
  318.    Internet architecture as it relates to hosts, and then gives some
  319.    general advice to host software vendors.  Finally, there is some
  320.    guidance on reading the rest of the document and some terminology.
  321.  
  322.    1.1  The Internet Architecture
  323.  
  324.       General background and discussion on the Internet architecture and
  325.       supporting protocol suite can be found in the DDN Protocol
  326.       Handbook [INTRO:3]; for background see for example [INTRO:9],
  327.       [INTRO:10], and [INTRO:11].  Reference [INTRO:5] describes the
  328.       procedure for obtaining Internet protocol documents, while
  329.       [INTRO:6] contains a list of the numbers assigned within Internet
  330.       protocols.
  331.  
  332.       1.1.1  Internet Hosts
  333.  
  334.          A host computer, or simply "host," is the ultimate consumer of
  335.          communication services.  A host generally executes application
  336.          programs on behalf of user(s), employing network and/or
  337.          Internet communication services in support of this function.
  338.          An Internet host corresponds to the concept of an "End-System"
  339.          used in the OSI protocol suite [INTRO:13].
  340.  
  341.          An Internet communication system consists of interconnected
  342.          packet networks supporting communication among host computers
  343.          using the Internet protocols.  The networks are interconnected
  344.          using packet-switching computers called "gateways" or "IP
  345.          routers" by the Internet community, and "Intermediate Systems"
  346.          by the OSI world [INTRO:13].  The RFC "Requirements for
  347.          Internet Gateways" [INTRO:2] contains the official
  348.          specifications for Internet gateways.  That RFC together with
  349.  
  350.  
  351.  
  352. Internet Engineering Task Force                                 [Page 6]
  353.  
  354.  
  355.  
  356.  
  357. RFC1122                       INTRODUCTION                  October 1989
  358.  
  359.  
  360.          the present document and its companion [INTRO:1] define the
  361.          rules for the current realization of the Internet architecture.
  362.  
  363.          Internet hosts span a wide range of size, speed, and function.
  364.          They range in size from small microprocessors through
  365.          workstations to mainframes and supercomputers.  In function,
  366.          they range from single-purpose hosts (such as terminal servers)
  367.          to full-service hosts that support a variety of online network
  368.          services, typically including remote login, file transfer, and
  369.          electronic mail.
  370.  
  371.          A host is generally said to be multihomed if it has more than
  372.          one interface to the same or to different networks.  See
  373.          Section 1.1.3 on "Terminology".
  374.  
  375.       1.1.2  Architectural Assumptions
  376.  
  377.          The current Internet architecture is based on a set of
  378.          assumptions about the communication system.  The assumptions
  379.          most relevant to hosts are as follows:
  380.  
  381.          (a)  The Internet is a network of networks.
  382.  
  383.               Each host is directly connected to some particular
  384.               network(s); its connection to the Internet is only
  385.               conceptual.  Two hosts on the same network communicate
  386.               with each other using the same set of protocols that they
  387.               would use to communicate with hosts on distant networks.
  388.  
  389.          (b)  Gateways don't keep connection state information.
  390.  
  391.               To improve robustness of the communication system,
  392.               gateways are designed to be stateless, forwarding each IP
  393.               datagram independently of other datagrams.  As a result,
  394.               redundant paths can be exploited to provide robust service
  395.               in spite of failures of intervening gateways and networks.
  396.  
  397.               All state information required for end-to-end flow control
  398.               and reliability is implemented in the hosts, in the
  399.               transport layer or in application programs.  All
  400.               connection control information is thus co-located with the
  401.               end points of the communication, so it will be lost only
  402.               if an end point fails.
  403.  
  404.          (c)  Routing complexity should be in the gateways.
  405.  
  406.               Routing is a complex and difficult problem, and ought to
  407.               be performed by the gateways, not the hosts.  An important
  408.  
  409.  
  410.  
  411. Internet Engineering Task Force                                 [Page 7]
  412.  
  413.  
  414.  
  415.  
  416. RFC1122                       INTRODUCTION                  October 1989
  417.  
  418.  
  419.               objective is to insulate host software from changes caused
  420.               by the inevitable evolution of the Internet routing
  421.               architecture.
  422.  
  423.          (d)  The System must tolerate wide network variation.
  424.  
  425.               A basic objective of the Internet design is to tolerate a
  426.               wide range of network characteristics -- e.g., bandwidth,
  427.               delay, packet loss, packet reordering, and maximum packet
  428.               size.  Another objective is robustness against failure of
  429.               individual networks, gateways, and hosts, using whatever
  430.               bandwidth is still available.  Finally, the goal is full
  431.               "open system interconnection": an Internet host must be
  432.               able to interoperate robustly and effectively with any
  433.               other Internet host, across diverse Internet paths.
  434.  
  435.               Sometimes host implementors have designed for less
  436.               ambitious goals.  For example, the LAN environment is
  437.               typically much more benign than the Internet as a whole;
  438.               LANs have low packet loss and delay and do not reorder
  439.               packets.  Some vendors have fielded host implementations
  440.               that are adequate for a simple LAN environment, but work
  441.               badly for general interoperation.  The vendor justifies
  442.               such a product as being economical within the restricted
  443.               LAN market.  However, isolated LANs seldom stay isolated
  444.               for long; they are soon gatewayed to each other, to
  445.               organization-wide internets, and eventually to the global
  446.               Internet system.  In the end, neither the customer nor the
  447.               vendor is served by incomplete or substandard Internet
  448.               host software.
  449.  
  450.               The requirements spelled out in this document are designed
  451.               for a full-function Internet host, capable of full
  452.               interoperation over an arbitrary Internet path.
  453.  
  454.  
  455.       1.1.3  Internet Protocol Suite
  456.  
  457.          To communicate using the Internet system, a host must implement
  458.          the layered set of protocols comprising the Internet protocol
  459.          suite.  A host typically must implement at least one protocol
  460.          from each layer.
  461.  
  462.          The protocol layers used in the Internet architecture are as
  463.          follows [INTRO:4]:
  464.  
  465.  
  466.          o  Application Layer
  467.  
  468.  
  469.  
  470. Internet Engineering Task Force                                 [Page 8]
  471.  
  472.  
  473.  
  474.  
  475. RFC1122                       INTRODUCTION                  October 1989
  476.  
  477.  
  478.               The application layer is the top layer of the Internet
  479.               protocol suite.  The Internet suite does not further
  480.               subdivide the application layer, although some of the
  481.               Internet application layer protocols do contain some
  482.               internal sub-layering.  The application layer of the
  483.               Internet suite essentially combines the functions of the
  484.               top two layers -- Presentation and Application -- of the
  485.               OSI reference model.
  486.  
  487.               We distinguish two categories of application layer
  488.               protocols:  user protocols that provide service directly
  489.               to users, and support protocols that provide common system
  490.               functions.  Requirements for user and support protocols
  491.               will be found in the companion RFC [INTRO:1].
  492.  
  493.               The most common Internet user protocols are:
  494.  
  495.                 o  Telnet (remote login)
  496.                 o  FTP    (file transfer)
  497.                 o  SMTP   (electronic mail delivery)
  498.  
  499.               There are a number of other standardized user protocols
  500.               [INTRO:4] and many private user protocols.
  501.  
  502.               Support protocols, used for host name mapping, booting,
  503.               and management, include SNMP, BOOTP, RARP, and the Domain
  504.               Name System (DNS) protocols.
  505.  
  506.  
  507.          o  Transport Layer
  508.  
  509.               The transport layer provides end-to-end communication
  510.               services for applications.  There are two primary
  511.               transport layer protocols at present:
  512.  
  513.                 o Transmission Control Protocol (TCP)
  514.                 o User Datagram Protocol (UDP)
  515.  
  516.               TCP is a reliable connection-oriented transport service
  517.               that provides end-to-end reliability, resequencing, and
  518.               flow control.  UDP is a connectionless ("datagram")
  519.               transport service.
  520.  
  521.               Other transport protocols have been developed by the
  522.               research community, and the set of official Internet
  523.               transport protocols may be expanded in the future.
  524.  
  525.               Transport layer protocols are discussed in Chapter 4.
  526.  
  527.  
  528.  
  529. Internet Engineering Task Force                                 [Page 9]
  530.  
  531.  
  532.  
  533.  
  534. RFC1122                       INTRODUCTION                  October 1989
  535.  
  536.  
  537.          o  Internet Layer
  538.  
  539.               All Internet transport protocols use the Internet Protocol
  540.               (IP) to carry data from source host to destination host.
  541.               IP is a connectionless or datagram internetwork service,
  542.               providing no end-to-end delivery guarantees. Thus, IP
  543.               datagrams may arrive at the destination host damaged,
  544.               duplicated, out of order, or not at all.  The layers above
  545.               IP are responsible for reliable delivery service when it
  546.               is required.  The IP protocol includes provision for
  547.               addressing, type-of-service specification, fragmentation
  548.               and reassembly, and security information.
  549.  
  550.               The datagram or connectionless nature of the IP protocol
  551.               is a fundamental and characteristic feature of the
  552.               Internet architecture.  Internet IP was the model for the
  553.               OSI Connectionless Network Protocol [INTRO:12].
  554.  
  555.               ICMP is a control protocol that is considered to be an
  556.               integral part of IP, although it is architecturally
  557.               layered upon IP, i.e., it uses IP to carry its data end-
  558.               to-end just as a transport protocol like TCP or UDP does.
  559.               ICMP provides error reporting, congestion reporting, and
  560.               first-hop gateway redirection.
  561.  
  562.               IGMP is an Internet layer protocol used for establishing
  563.               dynamic host groups for IP multicasting.
  564.  
  565.               The Internet layer protocols IP, ICMP, and IGMP are
  566.               discussed in Chapter 3.
  567.  
  568.  
  569.          o  Link Layer
  570.  
  571.               To communicate on its directly-connected network, a host
  572.               must implement the communication protocol used to
  573.               interface to that network.  We call this a link layer or
  574.               media-access layer protocol.
  575.  
  576.               There is a wide variety of link layer protocols,
  577.               corresponding to the many different types of networks.
  578.               See Chapter 2.
  579.  
  580.  
  581.       1.1.4  Embedded Gateway Code
  582.  
  583.          Some Internet host software includes embedded gateway
  584.          functionality, so that these hosts can forward packets as a
  585.  
  586.  
  587.  
  588. Internet Engineering Task Force                                [Page 10]
  589.  
  590.  
  591.  
  592.  
  593. RFC1122                       INTRODUCTION                  October 1989
  594.  
  595.  
  596.          gateway would, while still performing the application layer
  597.          functions of a host.
  598.  
  599.          Such dual-purpose systems must follow the Gateway Requirements
  600.          RFC [INTRO:2]  with respect to their gateway functions, and
  601.          must follow the present document with respect to their host
  602.          functions.  In all overlapping cases, the two specifications
  603.          should be in agreement.
  604.  
  605.          There are varying opinions in the Internet community about
  606.          embedded gateway functionality.  The main arguments are as
  607.          follows:
  608.  
  609.          o    Pro: in a local network environment where networking is
  610.               informal, or in isolated internets, it may be convenient
  611.               and economical to use existing host systems as gateways.
  612.  
  613.               There is also an architectural argument for embedded
  614.               gateway functionality: multihoming is much more common
  615.               than originally foreseen, and multihoming forces a host to
  616.               make routing decisions as if it were a gateway.  If the
  617.               multihomed  host contains an embedded gateway, it will
  618.               have full routing knowledge and as a result will be able
  619.               to make more optimal routing decisions.
  620.  
  621.          o    Con: Gateway algorithms and protocols are still changing,
  622.               and they will continue to change as the Internet system
  623.               grows larger.  Attempting to include a general gateway
  624.               function within the host IP layer will force host system
  625.               maintainers to track these (more frequent) changes.  Also,
  626.               a larger pool of gateway implementations will make
  627.               coordinating the changes more difficult.  Finally, the
  628.               complexity of a gateway IP layer is somewhat greater than
  629.               that of a host, making the implementation and operation
  630.               tasks more complex.
  631.  
  632.               In addition, the style of operation of some hosts is not
  633.               appropriate for providing stable and robust gateway
  634.               service.
  635.  
  636.          There is considerable merit in both of these viewpoints.  One
  637.          conclusion can be drawn: an host administrator must have
  638.          conscious control over whether or not a given host acts as a
  639.          gateway.  See Section 3.1 for the detailed requirements.
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647. Internet Engineering Task Force                                [Page 11]
  648.  
  649.  
  650.  
  651.  
  652. RFC1122                       INTRODUCTION                  October 1989
  653.  
  654.  
  655.    1.2  General Considerations
  656.  
  657.       There are two important lessons that vendors of Internet host
  658.       software have learned and which a new vendor should consider
  659.       seriously.
  660.  
  661.       1.2.1  Continuing Internet Evolution
  662.  
  663.          The enormous growth of the Internet has revealed problems of
  664.          management and scaling in a large datagram-based packet
  665.          communication system.  These problems are being addressed, and
  666.          as a result there will be continuing evolution of the
  667.          specifications described in this document.  These changes will
  668.          be carefully planned and controlled, since there is extensive
  669.          participation in this planning by the vendors and by the
  670.          organizations responsible for operations of the networks.
  671.  
  672.          Development, evolution, and revision are characteristic of
  673.          computer network protocols today, and this situation will
  674.          persist for some years.  A vendor who develops computer
  675.          communication software for the Internet protocol suite (or any
  676.          other protocol suite!) and then fails to maintain and update
  677.          that software for changing specifications is going to leave a
  678.          trail of unhappy customers.  The Internet is a large
  679.          communication network, and the users are in constant contact
  680.          through it.  Experience has shown that knowledge of
  681.          deficiencies in vendor software propagates quickly through the
  682.          Internet technical community.
  683.  
  684.       1.2.2  Robustness Principle
  685.  
  686.          At every layer of the protocols, there is a general rule whose
  687.          application can lead to enormous benefits in robustness and
  688.          interoperability [IP:1]:
  689.  
  690.                 "Be liberal in what you accept, and
  691.                  conservative in what you send"
  692.  
  693.          Software should be written to deal with every conceivable
  694.          error, no matter how unlikely; sooner or later a packet will
  695.          come in with that particular combination of errors and
  696.          attributes, and unless the software is prepared, chaos can
  697.          ensue.  In general, it is best to assume that the network is
  698.          filled with malevolent entities that will send in packets
  699.          designed to have the worst possible effect.  This assumption
  700.          will lead to suitable protective design, although the most
  701.          serious problems in the Internet have been caused by
  702.          unenvisaged mechanisms triggered by low-probability events;
  703.  
  704.  
  705.  
  706. Internet Engineering Task Force                                [Page 12]
  707.  
  708.  
  709.  
  710.  
  711. RFC1122                       INTRODUCTION                  October 1989
  712.  
  713.  
  714.          mere human malice would never have taken so devious a course!
  715.  
  716.          Adaptability to change must be designed into all levels of
  717.          Internet host software.  As a simple example, consider a
  718.          protocol specification that contains an enumeration of values
  719.          for a particular header field -- e.g., a type field, a port
  720.          number, or an error code; this enumeration must be assumed to
  721.          be incomplete.  Thus, if a protocol specification defines four
  722.          possible error codes, the software must not break when a fifth
  723.          code shows up.  An undefined code might be logged (see below),
  724.          but it must not cause a failure.
  725.  
  726.          The second part of the principle is almost as important:
  727.          software on other hosts may contain deficiencies that make it
  728.          unwise to exploit legal but obscure protocol features.  It is
  729.          unwise to stray far from the obvious and simple, lest untoward
  730.          effects result elsewhere.  A corollary of this is "watch out
  731.          for misbehaving hosts"; host software should be prepared, not
  732.          just to survive other misbehaving hosts, but also to cooperate
  733.          to limit the amount of disruption such hosts can cause to the
  734.          shared communication facility.
  735.  
  736.       1.2.3  Error Logging
  737.  
  738.          The Internet includes a great variety of host and gateway
  739.          systems, each implementing many protocols and protocol layers,
  740.          and some of these contain bugs and mis-features in their
  741.          Internet protocol software.  As a result of complexity,
  742.          diversity, and distribution of function, the diagnosis of
  743.          Internet problems is often very difficult.
  744.  
  745.          Problem diagnosis will be aided if host implementations include
  746.          a carefully designed facility for logging erroneous or
  747.          "strange" protocol events.  It is important to include as much
  748.          diagnostic information as possible when an error is logged.  In
  749.          particular, it is often useful to record the header(s) of a
  750.          packet that caused an error.  However, care must be taken to
  751.          ensure that error logging does not consume prohibitive amounts
  752.          of resources or otherwise interfere with the operation of the
  753.          host.
  754.  
  755.          There is a tendency for abnormal but harmless protocol events
  756.          to overflow error logging files; this can be avoided by using a
  757.          "circular" log, or by enabling logging only while diagnosing a
  758.          known failure.  It may be useful to filter and count duplicate
  759.          successive messages.  One strategy that seems to work well is:
  760.          (1) always count abnormalities and make such counts accessible
  761.          through the management protocol (see [INTRO:1]); and (2) allow
  762.  
  763.  
  764.  
  765. Internet Engineering Task Force                                [Page 13]
  766.  
  767.  
  768.  
  769.  
  770. RFC1122                       INTRODUCTION                  October 1989
  771.  
  772.  
  773.          the logging of a great variety of events to be selectively
  774.          enabled.  For example, it might useful to be able to "log
  775.          everything" or to "log everything for host X".
  776.  
  777.          Note that different managements may have differing policies
  778.          about the amount of error logging that they want normally
  779.          enabled in a host.  Some will say, "if it doesn't hurt me, I
  780.          don't want to know about it", while others will want to take a
  781.          more watchful and aggressive attitude about detecting and
  782.          removing protocol abnormalities.
  783.  
  784.       1.2.4  Configuration
  785.  
  786.          It would be ideal if a host implementation of the Internet
  787.          protocol suite could be entirely self-configuring.  This would
  788.          allow the whole suite to be implemented in ROM or cast into
  789.          silicon, it would simplify diskless workstations, and it would
  790.          be an immense boon to harried LAN administrators as well as
  791.          system vendors.  We have not reached this ideal; in fact, we
  792.          are not even close.
  793.  
  794.          At many points in this document, you will find a requirement
  795.          that a parameter be a configurable option.  There are several
  796.          different reasons behind such requirements.  In a few cases,
  797.          there is current uncertainty or disagreement about the best
  798.          value, and it may be necessary to update the recommended value
  799.          in the future.  In other cases, the value really depends on
  800.          external factors -- e.g., the size of the host and the
  801.          distribution of its communication load, or the speeds and
  802.          topology of nearby networks -- and self-tuning algorithms are
  803.          unavailable and may be insufficient.  In some cases,
  804.          configurability is needed because of administrative
  805.          requirements.
  806.  
  807.          Finally, some configuration options are required to communicate
  808.          with obsolete or incorrect implementations of the protocols,
  809.          distributed without sources, that unfortunately persist in many
  810.          parts of the Internet.  To make correct systems coexist with
  811.          these faulty systems, administrators often have to "mis-
  812.          configure" the correct systems.  This problem will correct
  813.          itself gradually as the faulty systems are retired, but it
  814.          cannot be ignored by vendors.
  815.  
  816.          When we say that a parameter must be configurable, we do not
  817.          intend to require that its value be explicitly read from a
  818.          configuration file at every boot time.  We recommend that
  819.          implementors set up a default for each parameter, so a
  820.          configuration file is only necessary to override those defaults
  821.  
  822.  
  823.  
  824. Internet Engineering Task Force                                [Page 14]
  825.  
  826.  
  827.  
  828.  
  829. RFC1122                       INTRODUCTION                  October 1989
  830.  
  831.  
  832.          that are inappropriate in a particular installation.  Thus, the
  833.          configurability requirement is an assurance that it will be
  834.          POSSIBLE to override the default when necessary, even in a
  835.          binary-only or ROM-based product.
  836.  
  837.          This document requires a particular value for such defaults in
  838.          some cases.  The choice of default is a sensitive issue when
  839.          the configuration item controls the accommodation to existing
  840.          faulty systems.  If the Internet is to converge successfully to
  841.          complete interoperability, the default values built into
  842.          implementations must implement the official protocol, not
  843.          "mis-configurations" to accommodate faulty implementations.
  844.          Although marketing considerations have led some vendors to
  845.          choose mis-configuration defaults, we urge vendors to choose
  846.          defaults that will conform to the standard.
  847.  
  848.          Finally, we note that a vendor needs to provide adequate
  849.          documentation on all configuration parameters, their limits and
  850.          effects.
  851.  
  852.  
  853.    1.3  Reading this Document
  854.  
  855.       1.3.1  Organization
  856.  
  857.          Protocol layering, which is generally used as an organizing
  858.          principle in implementing network software, has also been used
  859.          to organize this document.  In describing the rules, we assume
  860.          that an implementation does strictly mirror the layering of the
  861.          protocols.  Thus, the following three major sections specify
  862.          the requirements for the link layer, the internet layer, and
  863.          the transport layer, respectively.  A companion RFC [INTRO:1]
  864.          covers application level software.  This layerist organization
  865.          was chosen for simplicity and clarity.
  866.  
  867.          However, strict layering is an imperfect model, both for the
  868.          protocol suite and for recommended implementation approaches.
  869.          Protocols in different layers interact in complex and sometimes
  870.          subtle ways, and particular functions often involve multiple
  871.          layers.  There are many design choices in an implementation,
  872.          many of which involve creative "breaking" of strict layering.
  873.          Every implementor is urged to read references [INTRO:7] and
  874.          [INTRO:8].
  875.  
  876.          This document describes the conceptual service interface
  877.          between layers using a functional ("procedure call") notation,
  878.          like that used in the TCP specification [TCP:1].  A host
  879.          implementation must support the logical information flow
  880.  
  881.  
  882.  
  883. Internet Engineering Task Force                                [Page 15]
  884.  
  885.  
  886.  
  887.  
  888. RFC1122                       INTRODUCTION                  October 1989
  889.  
  890.  
  891.          implied by these calls, but need not literally implement the
  892.          calls themselves.  For example, many implementations reflect
  893.          the coupling between the transport layer and the IP layer by
  894.          giving them shared access to common data structures.  These
  895.          data structures, rather than explicit procedure calls, are then
  896.          the agency for passing much of the information that is
  897.          required.
  898.  
  899.          In general, each major section of this document is organized
  900.          into the following subsections:
  901.  
  902.          (1)  Introduction
  903.  
  904.          (2)  Protocol Walk-Through -- considers the protocol
  905.               specification documents section-by-section, correcting
  906.               errors, stating requirements that may be ambiguous or
  907.               ill-defined, and providing further clarification or
  908.               explanation.
  909.  
  910.          (3)  Specific Issues -- discusses protocol design and
  911.               implementation issues that were not included in the walk-
  912.               through.
  913.  
  914.          (4)  Interfaces -- discusses the service interface to the next
  915.               higher layer.
  916.  
  917.          (5)  Summary -- contains a summary of the requirements of the
  918.               section.
  919.  
  920.  
  921.          Under many of the individual topics in this document, there is
  922.          parenthetical material labeled "DISCUSSION" or
  923.          "IMPLEMENTATION". This material is intended to give
  924.          clarification and explanation of the preceding requirements
  925.          text.  It also includes some suggestions on possible future
  926.          directions or developments.  The implementation material
  927.          contains suggested approaches that an implementor may want to
  928.          consider.
  929.  
  930.          The summary sections are intended to be guides and indexes to
  931.          the text, but are necessarily cryptic and incomplete.  The
  932.          summaries should never be used or referenced separately from
  933.          the complete RFC.
  934.  
  935.       1.3.2  Requirements
  936.  
  937.          In this document, the words that are used to define the
  938.          significance of each particular requirement are capitalized.
  939.  
  940.  
  941.  
  942. Internet Engineering Task Force                                [Page 16]
  943.  
  944.  
  945.  
  946.  
  947. RFC1122                       INTRODUCTION                  October 1989
  948.  
  949.  
  950.          These words are:
  951.  
  952.          *    "MUST"
  953.  
  954.               This word or the adjective "REQUIRED" means that the item
  955.               is an absolute requirement of the specification.
  956.  
  957.          *    "SHOULD"
  958.  
  959.               This word or the adjective "RECOMMENDED" means that there
  960.               may exist valid reasons in particular circumstances to
  961.               ignore this item, but the full implications should be
  962.               understood and the case carefully weighed before choosing
  963.               a different course.
  964.  
  965.          *    "MAY"
  966.  
  967.               This word or the adjective "OPTIONAL" means that this item
  968.               is truly optional.  One vendor may choose to include the
  969.               item because a particular marketplace requires it or
  970.               because it enhances the product, for example; another
  971.               vendor may omit the same item.
  972.  
  973.  
  974.          An implementation is not compliant if it fails to satisfy one
  975.          or more of the MUST requirements for the protocols it
  976.          implements.  An implementation that satisfies all the MUST and
  977.          all the SHOULD requirements for its protocols is said to be
  978.          "unconditionally compliant"; one that satisfies all the MUST
  979.          requirements but not all the SHOULD requirements for its
  980.          protocols is said to be "conditionally compliant".
  981.  
  982.       1.3.3  Terminology
  983.  
  984.          This document uses the following technical terms:
  985.  
  986.          Segment
  987.               A segment is the unit of end-to-end transmission in the
  988.               TCP protocol.  A segment consists of a TCP header followed
  989.               by application data.  A segment is transmitted by
  990.               encapsulation inside an IP datagram.
  991.  
  992.          Message
  993.               In this description of the lower-layer protocols, a
  994.               message is the unit of transmission in a transport layer
  995.               protocol.  In particular, a TCP segment is a message.  A
  996.               message consists of a transport protocol header followed
  997.               by application protocol data.  To be transmitted end-to-
  998.  
  999.  
  1000.  
  1001. Internet Engineering Task Force                                [Page 17]
  1002.  
  1003.  
  1004.  
  1005.  
  1006. RFC1122                       INTRODUCTION                  October 1989
  1007.  
  1008.  
  1009.               end through the Internet, a message must be encapsulated
  1010.               inside a datagram.
  1011.  
  1012.          IP Datagram
  1013.               An IP datagram is the unit of end-to-end transmission in
  1014.               the IP protocol.  An IP datagram consists of an IP header
  1015.               followed by transport layer data, i.e., of an IP header
  1016.               followed by a message.
  1017.  
  1018.               In the description of the internet layer (Section 3), the
  1019.               unqualified term "datagram" should be understood to refer
  1020.               to an IP datagram.
  1021.  
  1022.          Packet
  1023.               A packet is the unit of data passed across the interface
  1024.               between the internet layer and the link layer.  It
  1025.               includes an IP header and data.  A packet may be a
  1026.               complete IP datagram or a fragment of an IP datagram.
  1027.  
  1028.          Frame
  1029.               A frame is the unit of transmission in a link layer
  1030.               protocol, and consists of a link-layer header followed by
  1031.               a packet.
  1032.  
  1033.          Connected Network
  1034.               A network to which a host is interfaced is often known as
  1035.               the "local network" or the "subnetwork" relative to that
  1036.               host.  However, these terms can cause confusion, and
  1037.               therefore we use the term "connected network" in this
  1038.               document.
  1039.  
  1040.          Multihomed
  1041.               A host is said to be multihomed if it has multiple IP
  1042.               addresses.  For a discussion of multihoming, see Section
  1043.               3.3.4 below.
  1044.  
  1045.          Physical network interface
  1046.               This is a physical interface to a connected network and
  1047.               has a (possibly unique) link-layer address.  Multiple
  1048.               physical network interfaces on a single host may share the
  1049.               same link-layer address, but the address must be unique
  1050.               for different hosts on the same physical network.
  1051.  
  1052.          Logical [network] interface
  1053.               We define a logical [network] interface to be a logical
  1054.               path, distinguished by a unique IP address, to a connected
  1055.               network.  See Section 3.3.4.
  1056.  
  1057.  
  1058.  
  1059.  
  1060. Internet Engineering Task Force                                [Page 18]
  1061.  
  1062.  
  1063.  
  1064.  
  1065. RFC1122                       INTRODUCTION                  October 1989
  1066.  
  1067.  
  1068.          Specific-destination address
  1069.               This is the effective destination address of a datagram,
  1070.               even if it is broadcast or multicast; see Section 3.2.1.3.
  1071.  
  1072.          Path
  1073.               At a given moment, all the IP datagrams from a particular
  1074.               source host to a particular destination host will
  1075.               typically traverse the same sequence of gateways.  We use
  1076.               the term "path" for this sequence.  Note that a path is
  1077.               uni-directional; it is not unusual to have different paths
  1078.               in the two directions between a given host pair.
  1079.  
  1080.          MTU
  1081.               The maximum transmission unit, i.e., the size of the
  1082.               largest packet that can be transmitted.
  1083.  
  1084.  
  1085.          The terms frame, packet, datagram, message, and segment are
  1086.          illustrated by the following schematic diagrams:
  1087.  
  1088.          A. Transmission on connected network:
  1089.            _______________________________________________
  1090.           | LL hdr | IP hdr |         (data)              |
  1091.           |________|________|_____________________________|
  1092.  
  1093.            <---------- Frame ----------------------------->
  1094.                     <----------Packet -------------------->
  1095.  
  1096.  
  1097.          B. Before IP fragmentation or after IP reassembly:
  1098.                     ______________________________________
  1099.                    | IP hdr | transport| Application Data |
  1100.                    |________|____hdr___|__________________|
  1101.  
  1102.                     <--------  Datagram ------------------>
  1103.                              <-------- Message ----------->
  1104.            or, for TCP:
  1105.                     ______________________________________
  1106.                    | IP hdr |  TCP hdr | Application Data |
  1107.                    |________|__________|__________________|
  1108.  
  1109.                     <--------  Datagram ------------------>
  1110.                              <-------- Segment ----------->
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119. Internet Engineering Task Force                                [Page 19]
  1120.  
  1121.  
  1122.  
  1123.  
  1124. RFC1122                       INTRODUCTION                  October 1989
  1125.  
  1126.  
  1127.    1.4  Acknowledgments
  1128.  
  1129.       This document incorporates contributions and comments from a large
  1130.       group of Internet protocol experts, including representatives of
  1131.       university and research labs, vendors, and government agencies.
  1132.       It was assembled primarily by the Host Requirements Working Group
  1133.       of the Internet Engineering Task Force (IETF).
  1134.  
  1135.       The Editor would especially like to acknowledge the tireless
  1136.       dedication of the following people, who attended many long
  1137.       meetings and generated 3 million bytes of electronic mail over the
  1138.       past 18 months in pursuit of this document: Philip Almquist, Dave
  1139.       Borman (Cray Research), Noel Chiappa, Dave Crocker (DEC), Steve
  1140.       Deering (Stanford), Mike Karels (Berkeley), Phil Karn (Bellcore),
  1141.       John Lekashman (NASA), Charles Lynn (BBN), Keith McCloghrie (TWG),
  1142.       Paul Mockapetris (ISI), Thomas Narten (Purdue), Craig Partridge
  1143.       (BBN), Drew Perkins (CMU), and James Van Bokkelen (FTP Software).
  1144.  
  1145.       In addition, the following people made major contributions to the
  1146.       effort: Bill Barns (Mitre), Steve Bellovin (AT&T), Mike Brescia
  1147.       (BBN), Ed Cain (DCA), Annette DeSchon (ISI), Martin Gross (DCA),
  1148.       Phill Gross (NRI), Charles Hedrick (Rutgers), Van Jacobson (LBL),
  1149.       John Klensin (MIT), Mark Lottor (SRI), Milo Medin (NASA), Bill
  1150.       Melohn (Sun Microsystems), Greg Minshall (Kinetics), Jeff Mogul
  1151.       (DEC), John Mullen (CMC), Jon Postel (ISI), John Romkey (Epilogue
  1152.       Technology), and Mike StJohns (DCA).  The following also made
  1153.       significant contributions to particular areas: Eric Allman
  1154.       (Berkeley), Rob Austein (MIT), Art Berggreen (ACC), Keith Bostic
  1155.       (Berkeley), Vint Cerf (NRI), Wayne Hathaway (NASA), Matt Korn
  1156.       (IBM), Erik Naggum (Naggum Software, Norway), Robert Ullmann
  1157.       (Prime Computer), David Waitzman (BBN), Frank Wancho (USA), Arun
  1158.       Welch (Ohio State), Bill Westfield (Cisco), and Rayan Zachariassen
  1159.       (Toronto).
  1160.  
  1161.       We are grateful to all, including any contributors who may have
  1162.       been inadvertently omitted from this list.
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Internet Engineering Task Force                                [Page 20]
  1179.  
  1180.  
  1181.  
  1182.  
  1183. RFC1122                        LINK LAYER                   October 1989
  1184.  
  1185.  
  1186. 2. LINK LAYER
  1187.  
  1188.    2.1  INTRODUCTION
  1189.  
  1190.       All Internet systems, both hosts and gateways, have the same
  1191.       requirements for link layer protocols.  These requirements are
  1192.       given in Chapter 3 of "Requirements for Internet Gateways"
  1193.       [INTRO:2], augmented with the material in this section.
  1194.  
  1195.    2.2  PROTOCOL WALK-THROUGH
  1196.  
  1197.       None.
  1198.  
  1199.    2.3  SPECIFIC ISSUES
  1200.  
  1201.       2.3.1  Trailer Protocol Negotiation
  1202.  
  1203.          The trailer protocol [LINK:1] for link-layer encapsulation MAY
  1204.          be used, but only when it has been verified that both systems
  1205.          (host or gateway) involved in the link-layer communication
  1206.          implement trailers.  If the system does not dynamically
  1207.          negotiate use of the trailer protocol on a per-destination
  1208.          basis, the default configuration MUST disable the protocol.
  1209.  
  1210.          DISCUSSION:
  1211.               The trailer protocol is a link-layer encapsulation
  1212.               technique that rearranges the data contents of packets
  1213.               sent on the physical network.  In some cases, trailers
  1214.               improve the throughput of higher layer protocols by
  1215.               reducing the amount of data copying within the operating
  1216.               system.  Higher layer protocols are unaware of trailer
  1217.               use, but both the sending and receiving host MUST
  1218.               understand the protocol if it is used.
  1219.  
  1220.               Improper use of trailers can result in very confusing
  1221.               symptoms.  Only packets with specific size attributes are
  1222.               encapsulated using trailers, and typically only a small
  1223.               fraction of the packets being exchanged have these
  1224.               attributes.  Thus, if a system using trailers exchanges
  1225.               packets with a system that does not, some packets
  1226.               disappear into a black hole while others are delivered
  1227.               successfully.
  1228.  
  1229.          IMPLEMENTATION:
  1230.               On an Ethernet, packets encapsulated with trailers use a
  1231.               distinct Ethernet type [LINK:1], and trailer negotiation
  1232.               is performed at the time that ARP is used to discover the
  1233.               link-layer address of a destination system.
  1234.  
  1235.  
  1236.  
  1237. Internet Engineering Task Force                                [Page 21]
  1238.  
  1239.  
  1240.  
  1241.  
  1242. RFC1122                        LINK LAYER                   October 1989
  1243.  
  1244.  
  1245.               Specifically, the ARP exchange is completed in the usual
  1246.               manner using the normal IP protocol type, but a host that
  1247.               wants to speak trailers will send an additional "trailer
  1248.               ARP reply" packet, i.e., an ARP reply that specifies the
  1249.               trailer encapsulation protocol type but otherwise has the
  1250.               format of a normal ARP reply.  If a host configured to use
  1251.               trailers receives a trailer ARP reply message from a
  1252.               remote machine, it can add that machine to the list of
  1253.               machines that understand trailers, e.g., by marking the
  1254.               corresponding entry in the ARP cache.
  1255.  
  1256.               Hosts wishing to receive trailer encapsulations send
  1257.               trailer ARP replies whenever they complete exchanges of
  1258.               normal ARP messages for IP.  Thus, a host that received an
  1259.               ARP request for its IP protocol address would send a
  1260.               trailer ARP reply in addition to the normal IP ARP reply;
  1261.               a host that sent the IP ARP request would send a trailer
  1262.               ARP reply when it received the corresponding IP ARP reply.
  1263.               In this way, either the requesting or responding host in
  1264.               an IP ARP exchange may request that it receive trailer
  1265.               encapsulations.
  1266.  
  1267.               This scheme, using extra trailer ARP reply packets rather
  1268.               than sending an ARP request for the trailer protocol type,
  1269.               was designed to avoid a continuous exchange of ARP packets
  1270.               with a misbehaving host that, contrary to any
  1271.               specification or common sense, responded to an ARP reply
  1272.               for trailers with another ARP reply for IP.  This problem
  1273.               is avoided by sending a trailer ARP reply in response to
  1274.               an IP ARP reply only when the IP ARP reply answers an
  1275.               outstanding request; this is true when the hardware
  1276.               address for the host is still unknown when the IP ARP
  1277.               reply is received.  A trailer ARP reply may always be sent
  1278.               along with an IP ARP reply responding to an IP ARP
  1279.               request.
  1280.  
  1281.       2.3.2  Address Resolution Protocol -- ARP
  1282.  
  1283.          2.3.2.1  ARP Cache Validation
  1284.  
  1285.             An implementation of the Address Resolution Protocol (ARP)
  1286.             [LINK:2] MUST provide a mechanism to flush out-of-date cache
  1287.             entries.  If this mechanism involves a timeout, it SHOULD be
  1288.             possible to configure the timeout value.
  1289.  
  1290.             A mechanism to prevent ARP flooding (repeatedly sending an
  1291.             ARP Request for the same IP address, at a high rate) MUST be
  1292.             included.  The recommended maximum rate is 1 per second per
  1293.  
  1294.  
  1295.  
  1296. Internet Engineering Task Force                                [Page 22]
  1297.  
  1298.  
  1299.  
  1300.  
  1301. RFC1122                        LINK LAYER                   October 1989
  1302.  
  1303.  
  1304.             destination.
  1305.  
  1306.             DISCUSSION:
  1307.                  The ARP specification [LINK:2] suggests but does not
  1308.                  require a timeout mechanism to invalidate cache entries
  1309.                  when hosts change their Ethernet addresses.  The
  1310.                  prevalence of proxy ARP (see Section 2.4 of [INTRO:2])
  1311.                  has significantly increased the likelihood that cache
  1312.                  entries in hosts will become invalid, and therefore
  1313.                  some ARP-cache invalidation mechanism is now required
  1314.                  for hosts.  Even in the absence of proxy ARP, a long-
  1315.                  period cache timeout is useful in order to
  1316.                  automatically correct any bad ARP data that might have
  1317.                  been cached.
  1318.  
  1319.             IMPLEMENTATION:
  1320.                  Four mechanisms have been used, sometimes in
  1321.                  combination, to flush out-of-date cache entries.
  1322.  
  1323.                  (1)  Timeout -- Periodically time out cache entries,
  1324.                       even if they are in use.  Note that this timeout
  1325.                       should be restarted when the cache entry is
  1326.                       "refreshed" (by observing the source fields,
  1327.                       regardless of target address, of an ARP broadcast
  1328.                       from the system in question).  For proxy ARP
  1329.                       situations, the timeout needs to be on the order
  1330.                       of a minute.
  1331.  
  1332.                  (2)  Unicast Poll -- Actively poll the remote host by
  1333.                       periodically sending a point-to-point ARP Request
  1334.                       to it, and delete the entry if no ARP Reply is
  1335.                       received from N successive polls.  Again, the
  1336.                       timeout should be on the order of a minute, and
  1337.                       typically N is 2.
  1338.  
  1339.                  (3)  Link-Layer Advice -- If the link-layer driver
  1340.                       detects a delivery problem, flush the
  1341.                       corresponding ARP cache entry.
  1342.  
  1343.                  (4)  Higher-layer Advice -- Provide a call from the
  1344.                       Internet layer to the link layer to indicate a
  1345.                       delivery problem.  The effect of this call would
  1346.                       be to invalidate the corresponding cache entry.
  1347.                       This call would be analogous to the
  1348.                       "ADVISE_DELIVPROB()" call from the transport layer
  1349.                       to the Internet layer (see Section 3.4), and in
  1350.                       fact the ADVISE_DELIVPROB routine might in turn
  1351.                       call the link-layer advice routine to invalidate
  1352.  
  1353.  
  1354.  
  1355. Internet Engineering Task Force                                [Page 23]
  1356.  
  1357.  
  1358.  
  1359.  
  1360. RFC1122                        LINK LAYER                   October 1989
  1361.  
  1362.  
  1363.                       the ARP cache entry.
  1364.  
  1365.                  Approaches (1) and (2) involve ARP cache timeouts on
  1366.                  the order of a minute or less.  In the absence of proxy
  1367.                  ARP, a timeout this short could create noticeable
  1368.                  overhead traffic on a very large Ethernet.  Therefore,
  1369.                  it may be necessary to configure a host to lengthen the
  1370.                  ARP cache timeout.
  1371.  
  1372.          2.3.2.2  ARP Packet Queue
  1373.  
  1374.             The link layer SHOULD save (rather than discard) at least
  1375.             one (the latest) packet of each set of packets destined to
  1376.             the same unresolved IP address, and transmit the saved
  1377.             packet when the address has been resolved.
  1378.  
  1379.             DISCUSSION:
  1380.                  Failure to follow this recommendation causes the first
  1381.                  packet of every exchange to be lost.  Although higher-
  1382.                  layer protocols can generally cope with packet loss by
  1383.                  retransmission, packet loss does impact performance.
  1384.                  For example, loss of a TCP open request causes the
  1385.                  initial round-trip time estimate to be inflated.  UDP-
  1386.                  based applications such as the Domain Name System are
  1387.                  more seriously affected.
  1388.  
  1389.       2.3.3  Ethernet and IEEE 802 Encapsulation
  1390.  
  1391.          The IP encapsulation for Ethernets is described in RFC-894
  1392.          [LINK:3], while RFC-1042 [LINK:4] describes the IP
  1393.          encapsulation for IEEE 802 networks.  RFC-1042 elaborates and
  1394.          replaces the discussion in Section 3.4 of [INTRO:2].
  1395.  
  1396.          Every Internet host connected to a 10Mbps Ethernet cable:
  1397.  
  1398.          o    MUST be able to send and receive packets using RFC-894
  1399.               encapsulation;
  1400.  
  1401.          o    SHOULD be able to receive RFC-1042 packets, intermixed
  1402.               with RFC-894 packets; and
  1403.  
  1404.          o    MAY be able to send packets using RFC-1042 encapsulation.
  1405.  
  1406.  
  1407.          An Internet host that implements sending both the RFC-894 and
  1408.          the RFC-1042 encapsulations MUST provide a configuration switch
  1409.          to select which is sent, and this switch MUST default to RFC-
  1410.          894.
  1411.  
  1412.  
  1413.  
  1414. Internet Engineering Task Force                                [Page 24]
  1415.  
  1416.  
  1417.  
  1418.  
  1419. RFC1122                        LINK LAYER                   October 1989
  1420.  
  1421.  
  1422.          Note that the standard IP encapsulation in RFC-1042 does not
  1423.          use the protocol id value (K1=6) that IEEE reserved for IP;
  1424.          instead, it uses a value (K1=170) that implies an extension
  1425.          (the "SNAP") which can be used to hold the Ether-Type field.
  1426.          An Internet system MUST NOT send 802 packets using K1=6.
  1427.  
  1428.          Address translation from Internet addresses to link-layer
  1429.          addresses on Ethernet and IEEE 802 networks MUST be managed by
  1430.          the Address Resolution Protocol (ARP).
  1431.  
  1432.          The MTU for an Ethernet is 1500 and for 802.3 is 1492.
  1433.  
  1434.          DISCUSSION:
  1435.               The IEEE 802.3 specification provides for operation over a
  1436.               10Mbps Ethernet cable, in which case Ethernet and IEEE
  1437.               802.3 frames can be physically intermixed.  A receiver can
  1438.               distinguish Ethernet and 802.3 frames by the value of the
  1439.               802.3 Length field; this two-octet field coincides in the
  1440.               header with the Ether-Type field of an Ethernet frame.  In
  1441.               particular, the 802.3 Length field must be less than or
  1442.               equal to 1500, while all valid Ether-Type values are
  1443.               greater than 1500.
  1444.  
  1445.               Another compatibility problem arises with link-layer
  1446.               broadcasts.  A broadcast sent with one framing will not be
  1447.               seen by hosts that can receive only the other framing.
  1448.  
  1449.               The provisions of this section were designed to provide
  1450.               direct interoperation between 894-capable and 1042-capable
  1451.               systems on the same cable, to the maximum extent possible.
  1452.               It is intended to support the present situation where
  1453.               894-only systems predominate, while providing an easy
  1454.               transition to a possible future in which 1042-capable
  1455.               systems become common.
  1456.  
  1457.               Note that 894-only systems cannot interoperate directly
  1458.               with 1042-only systems.  If the two system types are set
  1459.               up as two different logical networks on the same cable,
  1460.               they can communicate only through an IP gateway.
  1461.               Furthermore, it is not useful or even possible for a
  1462.               dual-format host to discover automatically which format to
  1463.               send, because of the problem of link-layer broadcasts.
  1464.  
  1465.    2.4  LINK/INTERNET LAYER INTERFACE
  1466.  
  1467.       The packet receive interface between the IP layer and the link
  1468.       layer MUST include a flag to indicate whether the incoming packet
  1469.       was addressed to a link-layer broadcast address.
  1470.  
  1471.  
  1472.  
  1473. Internet Engineering Task Force                                [Page 25]
  1474.  
  1475.  
  1476.  
  1477.  
  1478. RFC1122                        LINK LAYER                   October 1989
  1479.  
  1480.  
  1481.       DISCUSSION
  1482.            Although the IP layer does not generally know link layer
  1483.            addresses (since every different network medium typically has
  1484.            a different address format), the broadcast address on a
  1485.            broadcast-capable medium is an important special case.  See
  1486.            Section 3.2.2, especially the DISCUSSION concerning broadcast
  1487.            storms.
  1488.  
  1489.       The packet send interface between the IP and link layers MUST
  1490.       include the 5-bit TOS field (see Section 3.2.1.6).
  1491.  
  1492.       The link layer MUST NOT report a Destination Unreachable error to
  1493.       IP solely because there is no ARP cache entry for a destination.
  1494.  
  1495.    2.5  LINK LAYER REQUIREMENTS SUMMARY
  1496.  
  1497.                                                   |       | | | |S| |
  1498.                                                   |       | | | |H| |F
  1499.                                                   |       | | | |O|M|o
  1500.                                                   |       | |S| |U|U|o
  1501.                                                   |       | |H| |L|S|t
  1502.                                                   |       |M|O| |D|T|n
  1503.                                                   |       |U|U|M| | |o
  1504.                                                   |       |S|L|A|N|N|t
  1505.                                                   |       |T|D|Y|O|O|t
  1506. FEATURE                                           |SECTION| | | |T|T|e
  1507. --------------------------------------------------|-------|-|-|-|-|-|--
  1508.                                                   |       | | | | | |
  1509. Trailer encapsulation                             |2.3.1  | | |x| | |
  1510. Send Trailers by default without negotiation      |2.3.1  | | | | |x|
  1511. ARP                                               |2.3.2  | | | | | |
  1512.   Flush out-of-date ARP cache entries             |2.3.2.1|x| | | | |
  1513.   Prevent ARP floods                              |2.3.2.1|x| | | | |
  1514.   Cache timeout configurable                      |2.3.2.1| |x| | | |
  1515.   Save at least one (latest) unresolved pkt       |2.3.2.2| |x| | | |
  1516. Ethernet and IEEE 802 Encapsulation               |2.3.3  | | | | | |
  1517.   Host able to:                                   |2.3.3  | | | | | |
  1518.     Send & receive RFC-894 encapsulation          |2.3.3  |x| | | | |
  1519.     Receive RFC-1042 encapsulation                |2.3.3  | |x| | | |
  1520.     Send RFC-1042 encapsulation                   |2.3.3  | | |x| | |
  1521.       Then config. sw. to select, RFC-894 dflt    |2.3.3  |x| | | | |
  1522.   Send K1=6 encapsulation                         |2.3.3  | | | | |x|
  1523.   Use ARP on Ethernet and IEEE 802 nets           |2.3.3  |x| | | | |
  1524. Link layer report b'casts to IP layer             |2.4    |x| | | | |
  1525. IP layer pass TOS to link layer                   |2.4    |x| | | | |
  1526. No ARP cache entry treated as Dest. Unreach.      |2.4    | | | | |x|
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532. Internet Engineering Task Force                                [Page 26]
  1533.  
  1534.  
  1535.  
  1536.  
  1537. RFC1122                      INTERNET LAYER                 October 1989
  1538.  
  1539.  
  1540. 3. INTERNET LAYER PROTOCOLS
  1541.  
  1542.    3.1 INTRODUCTION
  1543.  
  1544.       The Robustness Principle: "Be liberal in what you accept, and
  1545.       conservative in what you send" is particularly important in the
  1546.       Internet layer, where one misbehaving host can deny Internet
  1547.       service to many other hosts.
  1548.  
  1549.       The protocol standards used in the Internet layer are:
  1550.  
  1551.       o    RFC-791 [IP:1] defines the IP protocol and gives an
  1552.            introduction to the architecture of the Internet.
  1553.  
  1554.       o    RFC-792 [IP:2] defines ICMP, which provides routing,
  1555.            diagnostic and error functionality for IP.  Although ICMP
  1556.            messages are encapsulated within IP datagrams, ICMP
  1557.            processing is considered to be (and is typically implemented
  1558.            as) part of the IP layer.  See Section 3.2.2.
  1559.  
  1560.       o    RFC-950 [IP:3] defines the mandatory subnet extension to the
  1561.            addressing architecture.
  1562.  
  1563.       o    RFC-1112 [IP:4] defines the Internet Group Management
  1564.            Protocol IGMP, as part of a recommended extension to hosts
  1565.            and to the host-gateway interface to support Internet-wide
  1566.            multicasting at the IP level.  See Section 3.2.3.
  1567.  
  1568.            The target of an IP multicast may be an arbitrary group of
  1569.            Internet hosts.  IP multicasting is designed as a natural
  1570.            extension of the link-layer multicasting facilities of some
  1571.            networks, and it provides a standard means for local access
  1572.            to such link-layer multicasting facilities.
  1573.  
  1574.       Other important references are listed in Section 5 of this
  1575.       document.
  1576.  
  1577.       The Internet layer of host software MUST implement both IP and
  1578.       ICMP.  See Section 3.3.7 for the requirements on support of IGMP.
  1579.  
  1580.       The host IP layer has two basic functions:  (1) choose the "next
  1581.       hop" gateway or host for outgoing IP datagrams and (2) reassemble
  1582.       incoming IP datagrams.  The IP layer may also (3) implement
  1583.       intentional fragmentation of outgoing datagrams.  Finally, the IP
  1584.       layer must (4) provide diagnostic and error functionality.  We
  1585.       expect that IP layer functions may increase somewhat in the
  1586.       future, as further Internet control and management facilities are
  1587.       developed.
  1588.  
  1589.  
  1590.  
  1591. Internet Engineering Task Force                                [Page 27]
  1592.  
  1593.  
  1594.  
  1595.  
  1596. RFC1122                      INTERNET LAYER                 October 1989
  1597.  
  1598.  
  1599.       For normal datagrams, the processing is straightforward.  For
  1600.       incoming datagrams, the IP layer:
  1601.  
  1602.       (1)  verifies that the datagram is correctly formatted;
  1603.  
  1604.       (2)  verifies that it is destined to the local host;
  1605.  
  1606.       (3)  processes options;
  1607.  
  1608.       (4)  reassembles the datagram if necessary; and
  1609.  
  1610.       (5)  passes the encapsulated message to the appropriate
  1611.            transport-layer protocol module.
  1612.  
  1613.       For outgoing datagrams, the IP layer:
  1614.  
  1615.       (1)  sets any fields not set by the transport layer;
  1616.  
  1617.       (2)  selects the correct first hop on the connected network (a
  1618.            process called "routing");
  1619.  
  1620.       (3)  fragments the datagram if necessary and if intentional
  1621.            fragmentation is implemented (see Section 3.3.3); and
  1622.  
  1623.       (4)  passes the packet(s) to the appropriate link-layer driver.
  1624.  
  1625.  
  1626.       A host is said to be multihomed if it has multiple IP addresses.
  1627.       Multihoming introduces considerable confusion and complexity into
  1628.       the protocol suite, and it is an area in which the Internet
  1629.       architecture falls seriously short of solving all problems.  There
  1630.       are two distinct problem areas in multihoming:
  1631.  
  1632.       (1)  Local multihoming --  the host itself is multihomed; or
  1633.  
  1634.       (2)  Remote multihoming -- the local host needs to communicate
  1635.            with a remote multihomed host.
  1636.  
  1637.       At present, remote multihoming MUST be handled at the application
  1638.       layer, as discussed in the companion RFC [INTRO:1].  A host MAY
  1639.       support local multihoming, which is discussed in this document,
  1640.       and in particular in Section 3.3.4.
  1641.  
  1642.       Any host that forwards datagrams generated by another host is
  1643.       acting as a gateway and MUST also meet the specifications laid out
  1644.       in the gateway requirements RFC [INTRO:2].  An Internet host that
  1645.       includes embedded gateway code MUST have a configuration switch to
  1646.       disable the gateway function, and this switch MUST default to the
  1647.  
  1648.  
  1649.  
  1650. Internet Engineering Task Force                                [Page 28]
  1651.  
  1652.  
  1653.  
  1654.  
  1655. RFC1122                      INTERNET LAYER                 October 1989
  1656.  
  1657.  
  1658.       non-gateway mode.  In this mode, a datagram arriving through one
  1659.       interface will not be forwarded to another host or gateway (unless
  1660.       it is source-routed), regardless of whether the host is single-
  1661.       homed or multihomed.  The host software MUST NOT automatically
  1662.       move into gateway mode if the host has more than one interface, as
  1663.       the operator of the machine may neither want to provide that
  1664.       service nor be competent to do so.
  1665.  
  1666.       In the following, the action specified in certain cases is to
  1667.       "silently discard" a received datagram.  This means that the
  1668.       datagram will be discarded without further processing and that the
  1669.       host will not send any ICMP error message (see Section 3.2.2) as a
  1670.       result.  However, for diagnosis of problems a host SHOULD provide
  1671.       the capability of logging the error (see Section 1.2.3), including
  1672.       the contents of the silently-discarded datagram, and SHOULD record
  1673.       the event in a statistics counter.
  1674.  
  1675.       DISCUSSION:
  1676.            Silent discard of erroneous datagrams is generally intended
  1677.            to prevent "broadcast storms".
  1678.  
  1679.    3.2  PROTOCOL WALK-THROUGH
  1680.  
  1681.       3.2.1 Internet Protocol -- IP
  1682.  
  1683.          3.2.1.1  Version Number: RFC-791 Section 3.1
  1684.  
  1685.             A datagram whose version number is not 4 MUST be silently
  1686.             discarded.
  1687.  
  1688.          3.2.1.2  Checksum: RFC-791 Section 3.1
  1689.  
  1690.             A host MUST verify the IP header checksum on every received
  1691.             datagram and silently discard every datagram that has a bad
  1692.             checksum.
  1693.  
  1694.          3.2.1.3  Addressing: RFC-791 Section 3.2
  1695.  
  1696.             There are now five classes of IP addresses: Class A through
  1697.             Class E.  Class D addresses are used for IP multicasting
  1698.             [IP:4], while Class E addresses are reserved for
  1699.             experimental use.
  1700.  
  1701.             A multicast (Class D) address is a 28-bit logical address
  1702.             that stands for a group of hosts, and may be either
  1703.             permanent or transient.  Permanent multicast addresses are
  1704.             allocated by the Internet Assigned Number Authority
  1705.             [INTRO:6], while transient addresses may be allocated
  1706.  
  1707.  
  1708.  
  1709. Internet Engineering Task Force                                [Page 29]
  1710.  
  1711.  
  1712.  
  1713.  
  1714. RFC1122                      INTERNET LAYER                 October 1989
  1715.  
  1716.  
  1717.             dynamically to transient groups.  Group membership is
  1718.             determined dynamically using IGMP [IP:4].
  1719.  
  1720.             We now summarize the important special cases for Class A, B,
  1721.             and C IP addresses, using the following notation for an IP
  1722.             address:
  1723.  
  1724.                 { <Network-number>, <Host-number> }
  1725.  
  1726.             or
  1727.                 { <Network-number>, <Subnet-number>, <Host-number> }
  1728.  
  1729.             and the notation "-1" for a field that contains all 1 bits.
  1730.             This notation is not intended to imply that the 1-bits in an
  1731.             address mask need be contiguous.
  1732.  
  1733.             (a)  { 0, 0 }
  1734.  
  1735.                  This host on this network.  MUST NOT be sent, except as
  1736.                  a source address as part of an initialization procedure
  1737.                  by which the host learns its own IP address.
  1738.  
  1739.                  See also Section 3.3.6 for a non-standard use of {0,0}.
  1740.  
  1741.             (b)  { 0, <Host-number> }
  1742.  
  1743.                  Specified host on this network.  It MUST NOT be sent,
  1744.                  except as a source address as part of an initialization
  1745.                  procedure by which the host learns its full IP address.
  1746.  
  1747.             (c)  { -1, -1 }
  1748.  
  1749.                  Limited broadcast.  It MUST NOT be used as a source
  1750.                  address.
  1751.  
  1752.                  A datagram with this destination address will be
  1753.                  received by every host on the connected physical
  1754.                  network but will not be forwarded outside that network.
  1755.  
  1756.             (d)  { <Network-number>, -1 }
  1757.  
  1758.                  Directed broadcast to the specified network.  It MUST
  1759.                  NOT be used as a source address.
  1760.  
  1761.             (e)  { <Network-number>, <Subnet-number>, -1 }
  1762.  
  1763.                  Directed broadcast to the specified subnet.  It MUST
  1764.                  NOT be used as a source address.
  1765.  
  1766.  
  1767.  
  1768. Internet Engineering Task Force                                [Page 30]
  1769.  
  1770.  
  1771.  
  1772.  
  1773. RFC1122                      INTERNET LAYER                 October 1989
  1774.  
  1775.  
  1776.             (f)  { <Network-number>, -1, -1 }
  1777.  
  1778.                  Directed broadcast to all subnets of the specified
  1779.                  subnetted network.  It MUST NOT be used as a source
  1780.                  address.
  1781.  
  1782.             (g)  { 127, <any> }
  1783.  
  1784.                  Internal host loopback address.  Addresses of this form
  1785.                  MUST NOT appear outside a host.
  1786.  
  1787.             The <Network-number> is administratively assigned so that
  1788.             its value will be unique in the entire world.
  1789.  
  1790.             IP addresses are not permitted to have the value 0 or -1 for
  1791.             any of the <Host-number>, <Network-number>, or <Subnet-
  1792.             number> fields (except in the special cases listed above).
  1793.             This implies that each of these fields will be at least two
  1794.             bits long.
  1795.  
  1796.             For further discussion of broadcast addresses, see Section
  1797.             3.3.6.
  1798.  
  1799.             A host MUST support the subnet extensions to IP [IP:3].  As
  1800.             a result, there will be an address mask of the form:
  1801.             {-1, -1, 0} associated with each of the host's local IP
  1802.             addresses; see Sections 3.2.2.9 and 3.3.1.1.
  1803.  
  1804.             When a host sends any datagram, the IP source address MUST
  1805.             be one of its own IP addresses (but not a broadcast or
  1806.             multicast address).
  1807.  
  1808.             A host MUST silently discard an incoming datagram that is
  1809.             not destined for the host.  An incoming datagram is destined
  1810.             for the host if the datagram's destination address field is:
  1811.  
  1812.             (1)  (one of) the host's IP address(es); or
  1813.  
  1814.             (2)  an IP broadcast address valid for the connected
  1815.                  network; or
  1816.  
  1817.             (3)  the address for a multicast group of which the host is
  1818.                  a member on the incoming physical interface.
  1819.  
  1820.             For most purposes, a datagram addressed to a broadcast or
  1821.             multicast destination is processed as if it had been
  1822.             addressed to one of the host's IP addresses; we use the term
  1823.             "specific-destination address" for the equivalent local IP
  1824.  
  1825.  
  1826.  
  1827. Internet Engineering Task Force                                [Page 31]
  1828.  
  1829.  
  1830.  
  1831.  
  1832. RFC1122                      INTERNET LAYER                 October 1989
  1833.  
  1834.  
  1835.             address of the host.  The specific-destination address is
  1836.             defined to be the destination address in the IP header
  1837.             unless the header contains a broadcast or multicast address,
  1838.             in which case the specific-destination is an IP address
  1839.             assigned to the physical interface on which the datagram
  1840.             arrived.
  1841.  
  1842.             A host MUST silently discard an incoming datagram containing
  1843.             an IP source address that is invalid by the rules of this
  1844.             section.  This validation could be done in either the IP
  1845.             layer or by each protocol in the transport layer.
  1846.  
  1847.             DISCUSSION:
  1848.                  A mis-addressed datagram might be caused by a link-
  1849.                  layer broadcast of a unicast datagram or by a gateway
  1850.                  or host that is confused or mis-configured.
  1851.  
  1852.                  An architectural goal for Internet hosts was to allow
  1853.                  IP addresses to be featureless 32-bit numbers, avoiding
  1854.                  algorithms that required a knowledge of the IP address
  1855.                  format.  Otherwise, any future change in the format or
  1856.                  interpretation of IP addresses will require host
  1857.                  software changes.  However, validation of broadcast and
  1858.                  multicast addresses violates this goal; a few other
  1859.                  violations are described elsewhere in this document.
  1860.  
  1861.                  Implementers should be aware that applications
  1862.                  depending upon the all-subnets directed broadcast
  1863.                  address (f) may be unusable on some networks.  All-
  1864.                  subnets broadcast is not widely implemented in vendor
  1865.                  gateways at present, and even when it is implemented, a
  1866.                  particular network administration may disable it in the
  1867.                  gateway configuration.
  1868.  
  1869.          3.2.1.4  Fragmentation and Reassembly: RFC-791 Section 3.2
  1870.  
  1871.             The Internet model requires that every host support
  1872.             reassembly.  See Sections 3.3.2 and 3.3.3 for the
  1873.             requirements on fragmentation and reassembly.
  1874.  
  1875.          3.2.1.5  Identification: RFC-791 Section 3.2
  1876.  
  1877.             When sending an identical copy of an earlier datagram, a
  1878.             host MAY optionally retain the same Identification field in
  1879.             the copy.
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886. Internet Engineering Task Force                                [Page 32]
  1887.  
  1888.  
  1889.  
  1890.  
  1891. RFC1122                      INTERNET LAYER                 October 1989
  1892.  
  1893.  
  1894.             DISCUSSION:
  1895.                  Some Internet protocol experts have maintained that
  1896.                  when a host sends an identical copy of an earlier
  1897.                  datagram, the new copy should contain the same
  1898.                  Identification value as the original.  There are two
  1899.                  suggested advantages:  (1) if the datagrams are
  1900.                  fragmented and some of the fragments are lost, the
  1901.                  receiver may be able to reconstruct a complete datagram
  1902.                  from fragments of the original and the copies; (2) a
  1903.                  congested gateway might use the IP Identification field
  1904.                  (and Fragment Offset) to discard duplicate datagrams
  1905.                  from the queue.
  1906.  
  1907.                  However, the observed patterns of datagram loss in the
  1908.                  Internet do not favor the probability of retransmitted
  1909.                  fragments filling reassembly gaps, while other
  1910.                  mechanisms (e.g., TCP repacketizing upon
  1911.                  retransmission) tend to prevent retransmission of an
  1912.                  identical datagram [IP:9].  Therefore, we believe that
  1913.                  retransmitting the same Identification field is not
  1914.                  useful.  Also, a connectionless transport protocol like
  1915.                  UDP would require the cooperation of the application
  1916.                  programs to retain the same Identification value in
  1917.                  identical datagrams.
  1918.  
  1919.          3.2.1.6  Type-of-Service: RFC-791 Section 3.2
  1920.  
  1921.             The "Type-of-Service" byte in the IP header is divided into
  1922.             two sections:  the Precedence field (high-order 3 bits), and
  1923.             a field that is customarily called "Type-of-Service" or
  1924.             "TOS" (low-order 5 bits).  In this document, all references
  1925.             to "TOS" or the "TOS field" refer to the low-order 5 bits
  1926.             only.
  1927.  
  1928.             The Precedence field is intended for Department of Defense
  1929.             applications of the Internet protocols.  The use of non-zero
  1930.             values in this field is outside the scope of this document
  1931.             and the IP standard specification.  Vendors should consult
  1932.             the Defense Communication Agency (DCA) for guidance on the
  1933.             IP Precedence field and its implications for other protocol
  1934.             layers.  However, vendors should note that the use of
  1935.             precedence will most likely require that its value be passed
  1936.             between protocol layers in just the same way as the TOS
  1937.             field is passed.
  1938.  
  1939.             The IP layer MUST provide a means for the transport layer to
  1940.             set the TOS field of every datagram that is sent; the
  1941.             default is all zero bits.  The IP layer SHOULD pass received
  1942.  
  1943.  
  1944.  
  1945. Internet Engineering Task Force                                [Page 33]
  1946.  
  1947.  
  1948.  
  1949.  
  1950. RFC1122                      INTERNET LAYER                 October 1989
  1951.  
  1952.  
  1953.             TOS values up to the transport layer.
  1954.  
  1955.             The particular link-layer mappings of TOS contained in RFC-
  1956.             795 SHOULD NOT be implemented.
  1957.  
  1958.             DISCUSSION:
  1959.                  While the TOS field has been little used in the past,
  1960.                  it is expected to play an increasing role in the near
  1961.                  future.  The TOS field is expected to be used to
  1962.                  control two aspects of gateway operations: routing and
  1963.                  queueing algorithms.  See Section 2 of [INTRO:1] for
  1964.                  the requirements on application programs to specify TOS
  1965.                  values.
  1966.  
  1967.                  The TOS field may also be mapped into link-layer
  1968.                  service selectors.  This has been applied to provide
  1969.                  effective sharing of serial lines by different classes
  1970.                  of TCP traffic, for example.  However, the mappings
  1971.                  suggested in RFC-795 for networks that were included in
  1972.                  the Internet as of 1981 are now obsolete.
  1973.  
  1974.          3.2.1.7  Time-to-Live: RFC-791 Section 3.2
  1975.  
  1976.             A host MUST NOT send a datagram with a Time-to-Live (TTL)
  1977.             value of zero.
  1978.  
  1979.             A host MUST NOT discard a datagram just because it was
  1980.             received with TTL less than 2.
  1981.  
  1982.             The IP layer MUST provide a means for the transport layer to
  1983.             set the TTL field of every datagram that is sent.  When a
  1984.             fixed TTL value is used, it MUST be configurable.  The
  1985.             current suggested value will be published in the "Assigned
  1986.             Numbers" RFC.
  1987.  
  1988.             DISCUSSION:
  1989.                  The TTL field has two functions: limit the lifetime of
  1990.                  TCP segments (see RFC-793 [TCP:1], p. 28), and
  1991.                  terminate Internet routing loops.  Although TTL is a
  1992.                  time in seconds, it also has some attributes of a hop-
  1993.                  count, since each gateway is required to reduce the TTL
  1994.                  field by at least one.
  1995.  
  1996.                  The intent is that TTL expiration will cause a datagram
  1997.                  to be discarded by a gateway but not by the destination
  1998.                  host; however, hosts that act as gateways by forwarding
  1999.                  datagrams must follow the gateway rules for TTL.
  2000.  
  2001.  
  2002.  
  2003.  
  2004. Internet Engineering Task Force                                [Page 34]
  2005.  
  2006.  
  2007.  
  2008.  
  2009. RFC1122                      INTERNET LAYER                 October 1989
  2010.  
  2011.  
  2012.                  A higher-layer protocol may want to set the TTL in
  2013.                  order to implement an "expanding scope" search for some
  2014.                  Internet resource.  This is used by some diagnostic
  2015.                  tools, and is expected to be useful for locating the
  2016.                  "nearest" server of a given class using IP
  2017.                  multicasting, for example.  A particular transport
  2018.                  protocol may also want to specify its own TTL bound on
  2019.                  maximum datagram lifetime.
  2020.  
  2021.                  A fixed value must be at least big enough for the
  2022.                  Internet "diameter," i.e., the longest possible path.
  2023.                  A reasonable value is about twice the diameter, to
  2024.                  allow for continued Internet growth.
  2025.  
  2026.          3.2.1.8  Options: RFC-791 Section 3.2
  2027.  
  2028.             There MUST be a means for the transport layer to specify IP
  2029.             options to be included in transmitted IP datagrams (see
  2030.             Section 3.4).
  2031.  
  2032.             All IP options (except NOP or END-OF-LIST) received in
  2033.             datagrams MUST be passed to the transport layer (or to ICMP
  2034.             processing when the datagram is an ICMP message).  The IP
  2035.             and transport layer MUST each interpret those IP options
  2036.             that they understand and silently ignore the others.
  2037.  
  2038.             Later sections of this document discuss specific IP option
  2039.             support required by each of ICMP, TCP, and UDP.
  2040.  
  2041.             DISCUSSION:
  2042.                  Passing all received IP options to the transport layer
  2043.                  is a deliberate "violation of strict layering" that is
  2044.                  designed to ease the introduction of new transport-
  2045.                  relevant IP options in the future.  Each layer must
  2046.                  pick out any options that are relevant to its own
  2047.                  processing and ignore the rest.  For this purpose,
  2048.                  every IP option except NOP and END-OF-LIST will include
  2049.                  a specification of its own length.
  2050.  
  2051.                  This document does not define the order in which a
  2052.                  receiver must process multiple options in the same IP
  2053.                  header.  Hosts sending multiple options must be aware
  2054.                  that this introduces an ambiguity in the meaning of
  2055.                  certain options when combined with a source-route
  2056.                  option.
  2057.  
  2058.             IMPLEMENTATION:
  2059.                  The IP layer must not crash as the result of an option
  2060.  
  2061.  
  2062.  
  2063. Internet Engineering Task Force                                [Page 35]
  2064.  
  2065.  
  2066.  
  2067.  
  2068. RFC1122                      INTERNET LAYER                 October 1989
  2069.  
  2070.  
  2071.                  length that is outside the possible range.  For
  2072.                  example, erroneous option lengths have been observed to
  2073.                  put some IP implementations into infinite loops.
  2074.  
  2075.             Here are the requirements for specific IP options:
  2076.  
  2077.  
  2078.             (a)  Security Option
  2079.  
  2080.                  Some environments require the Security option in every
  2081.                  datagram; such a requirement is outside the scope of
  2082.                  this document and the IP standard specification.  Note,
  2083.                  however, that the security options described in RFC-791
  2084.                  and RFC-1038 are obsolete.  For DoD applications,
  2085.                  vendors should consult [IP:8] for guidance.
  2086.  
  2087.  
  2088.             (b)  Stream Identifier Option
  2089.  
  2090.                  This option is obsolete; it SHOULD NOT be sent, and it
  2091.                  MUST be silently ignored if received.
  2092.  
  2093.  
  2094.             (c)  Source Route Options
  2095.  
  2096.                  A host MUST support originating a source route and MUST
  2097.                  be able to act as the final destination of a source
  2098.                  route.
  2099.  
  2100.                  If host receives a datagram containing a completed
  2101.                  source route (i.e., the pointer points beyond the last
  2102.                  field), the datagram has reached its final destination;
  2103.                  the option as received (the recorded route) MUST be
  2104.                  passed up to the transport layer (or to ICMP message
  2105.                  processing).  This recorded route will be reversed and
  2106.                  used to form a return source route for reply datagrams
  2107.                  (see discussion of IP Options in Section 4).  When a
  2108.                  return source route is built, it MUST be correctly
  2109.                  formed even if the recorded route included the source
  2110.                  host (see case (B) in the discussion below).
  2111.  
  2112.                  An IP header containing more than one Source Route
  2113.                  option MUST NOT be sent; the effect on routing of
  2114.                  multiple Source Route options is implementation-
  2115.                  specific.
  2116.  
  2117.                  Section 3.3.5 presents the rules for a host acting as
  2118.                  an intermediate hop in a source route, i.e., forwarding
  2119.  
  2120.  
  2121.  
  2122. Internet Engineering Task Force                                [Page 36]
  2123.  
  2124.  
  2125.  
  2126.  
  2127. RFC1122                      INTERNET LAYER                 October 1989
  2128.  
  2129.  
  2130.                  a source-routed datagram.
  2131.  
  2132.                  DISCUSSION:
  2133.                       If a source-routed datagram is fragmented, each
  2134.                       fragment will contain a copy of the source route.
  2135.                       Since the processing of IP options (including a
  2136.                       source route) must precede reassembly, the
  2137.                       original datagram will not be reassembled until
  2138.                       the final destination is reached.
  2139.  
  2140.                       Suppose a source routed datagram is to be routed
  2141.                       from host S to host D via gateways G1, G2, ... Gn.
  2142.                       There was an ambiguity in the specification over
  2143.                       whether the source route option in a datagram sent
  2144.                       out by S should be (A) or (B):
  2145.  
  2146.                           (A):  {>>G2, G3, ... Gn, D}     <--- CORRECT
  2147.  
  2148.                           (B):  {S, >>G2, G3, ... Gn, D}  <---- WRONG
  2149.  
  2150.                       (where >> represents the pointer).  If (A) is
  2151.                       sent, the datagram received at D will contain the
  2152.                       option: {G1, G2, ... Gn >>}, with S and D as the
  2153.                       IP source and destination addresses.  If (B) were
  2154.                       sent, the datagram received at D would again
  2155.                       contain S and D as the same IP source and
  2156.                       destination addresses, but the option would be:
  2157.                       {S, G1, ...Gn >>}; i.e., the originating host
  2158.                       would be the first hop in the route.
  2159.  
  2160.  
  2161.             (d)  Record Route Option
  2162.  
  2163.                  Implementation of originating and processing the Record
  2164.                  Route option is OPTIONAL.
  2165.  
  2166.  
  2167.             (e)  Timestamp Option
  2168.  
  2169.                  Implementation of originating and processing the
  2170.                  Timestamp option is OPTIONAL.  If it is implemented,
  2171.                  the following rules apply:
  2172.  
  2173.                  o    The originating host MUST record a timestamp in a
  2174.                       Timestamp option whose Internet address fields are
  2175.                       not pre-specified or whose first pre-specified
  2176.                       address is the host's interface address.
  2177.  
  2178.  
  2179.  
  2180.  
  2181. Internet Engineering Task Force                                [Page 37]
  2182.  
  2183.  
  2184.  
  2185.  
  2186. RFC1122                      INTERNET LAYER                 October 1989
  2187.  
  2188.  
  2189.                  o    The destination host MUST (if possible) add the
  2190.                       current timestamp to a Timestamp option before
  2191.                       passing the option to the transport layer or to
  2192.                       ICMP for processing.
  2193.  
  2194.                  o    A timestamp value MUST follow the rules given in
  2195.                       Section 3.2.2.8 for the ICMP Timestamp message.
  2196.  
  2197.  
  2198.       3.2.2 Internet Control Message Protocol -- ICMP
  2199.  
  2200.          ICMP messages are grouped into two classes.
  2201.  
  2202.          *
  2203.               ICMP error messages:
  2204.  
  2205.                Destination Unreachable   (see Section 3.2.2.1)
  2206.                Redirect                  (see Section 3.2.2.2)
  2207.                Source Quench             (see Section 3.2.2.3)
  2208.                Time Exceeded             (see Section 3.2.2.4)
  2209.                Parameter Problem         (see Section 3.2.2.5)
  2210.  
  2211.  
  2212.          *
  2213.               ICMP query messages:
  2214.  
  2215.                 Echo                     (see Section 3.2.2.6)
  2216.                 Information              (see Section 3.2.2.7)
  2217.                 Timestamp                (see Section 3.2.2.8)
  2218.                 Address Mask             (see Section 3.2.2.9)
  2219.  
  2220.  
  2221.          If an ICMP message of unknown type is received, it MUST be
  2222.          silently discarded.
  2223.  
  2224.          Every ICMP error message includes the Internet header and at
  2225.          least the first 8 data octets of the datagram that triggered
  2226.          the error; more than 8 octets MAY be sent; this header and data
  2227.          MUST be unchanged from the received datagram.
  2228.  
  2229.          In those cases where the Internet layer is required to pass an
  2230.          ICMP error message to the transport layer, the IP protocol
  2231.          number MUST be extracted from the original header and used to
  2232.          select the appropriate transport protocol entity to handle the
  2233.          error.
  2234.  
  2235.          An ICMP error message SHOULD be sent with normal (i.e., zero)
  2236.          TOS bits.
  2237.  
  2238.  
  2239.  
  2240. Internet Engineering Task Force                                [Page 38]
  2241.  
  2242.  
  2243.  
  2244.  
  2245. RFC1122                      INTERNET LAYER                 October 1989
  2246.  
  2247.  
  2248.          An ICMP error message MUST NOT be sent as the result of
  2249.          receiving:
  2250.  
  2251.          *    an ICMP error message, or
  2252.  
  2253.          *    a datagram destined to an IP broadcast or IP multicast
  2254.               address, or
  2255.  
  2256.          *    a datagram sent as a link-layer broadcast, or
  2257.  
  2258.          *    a non-initial fragment, or
  2259.  
  2260.          *    a datagram whose source address does not define a single
  2261.               host -- e.g., a zero address, a loopback address, a
  2262.               broadcast address, a multicast address, or a Class E
  2263.               address.
  2264.  
  2265.          NOTE: THESE RESTRICTIONS TAKE PRECEDENCE OVER ANY REQUIREMENT
  2266.          ELSEWHERE IN THIS DOCUMENT FOR SENDING ICMP ERROR MESSAGES.
  2267.  
  2268.          DISCUSSION:
  2269.               These rules will prevent the "broadcast storms" that have
  2270.               resulted from hosts returning ICMP error messages in
  2271.               response to broadcast datagrams.  For example, a broadcast
  2272.               UDP segment to a non-existent port could trigger a flood
  2273.               of ICMP Destination Unreachable datagrams from all
  2274.               machines that do not have a client for that destination
  2275.               port.  On a large Ethernet, the resulting collisions can
  2276.               render the network useless for a second or more.
  2277.  
  2278.               Every datagram that is broadcast on the connected network
  2279.               should have a valid IP broadcast address as its IP
  2280.               destination (see Section 3.3.6).  However, some hosts
  2281.               violate this rule.  To be certain to detect broadcast
  2282.               datagrams, therefore, hosts are required to check for a
  2283.               link-layer broadcast as well as an IP-layer broadcast
  2284.               address.
  2285.  
  2286.          IMPLEMENTATION:
  2287.               This requires that the link layer inform the IP layer when
  2288.               a link-layer broadcast datagram has been received; see
  2289.               Section 2.4.
  2290.  
  2291.          3.2.2.1  Destination Unreachable: RFC-792
  2292.  
  2293.             The following additional codes are hereby defined:
  2294.  
  2295.                     6 = destination network unknown
  2296.  
  2297.  
  2298.  
  2299. Internet Engineering Task Force                                [Page 39]
  2300.  
  2301.  
  2302.  
  2303.  
  2304. RFC1122                      INTERNET LAYER                 October 1989
  2305.  
  2306.  
  2307.                     7 = destination host unknown
  2308.  
  2309.                     8 = source host isolated
  2310.  
  2311.                     9 = communication with destination network
  2312.                             administratively prohibited
  2313.  
  2314.                    10 = communication with destination host
  2315.                             administratively prohibited
  2316.  
  2317.                    11 = network unreachable for type of service
  2318.  
  2319.                    12 = host unreachable for type of service
  2320.  
  2321.             A host SHOULD generate Destination Unreachable messages with
  2322.             code:
  2323.  
  2324.             2    (Protocol Unreachable), when the designated transport
  2325.                  protocol is not supported; or
  2326.  
  2327.             3    (Port Unreachable), when the designated transport
  2328.                  protocol (e.g., UDP) is unable to demultiplex the
  2329.                  datagram but has no protocol mechanism to inform the
  2330.                  sender.
  2331.  
  2332.             A Destination Unreachable message that is received MUST be
  2333.             reported to the transport layer.  The transport layer SHOULD
  2334.             use the information appropriately; for example, see Sections
  2335.             4.1.3.3, 4.2.3.9, and 4.2.4 below.  A transport protocol
  2336.             that has its own mechanism for notifying the sender that a
  2337.             port is unreachable (e.g., TCP, which sends RST segments)
  2338.             MUST nevertheless accept an ICMP Port Unreachable for the
  2339.             same purpose.
  2340.  
  2341.             A Destination Unreachable message that is received with code
  2342.             0 (Net), 1 (Host), or 5 (Bad Source Route) may result from a
  2343.             routing transient and MUST therefore be interpreted as only
  2344.             a hint, not proof, that the specified destination is
  2345.             unreachable [IP:11].  For example, it MUST NOT be used as
  2346.             proof of a dead gateway (see Section 3.3.1).
  2347.  
  2348.          3.2.2.2  Redirect: RFC-792
  2349.  
  2350.             A host SHOULD NOT send an ICMP Redirect message; Redirects
  2351.             are to be sent only by gateways.
  2352.  
  2353.             A host receiving a Redirect message MUST update its routing
  2354.             information accordingly.  Every host MUST be prepared to
  2355.  
  2356.  
  2357.  
  2358. Internet Engineering Task Force                                [Page 40]
  2359.  
  2360.  
  2361.  
  2362.  
  2363. RFC1122                      INTERNET LAYER                 October 1989
  2364.  
  2365.  
  2366.             accept both Host and Network Redirects and to process them
  2367.             as described in Section 3.3.1.2 below.
  2368.  
  2369.             A Redirect message SHOULD be silently discarded if the new
  2370.             gateway address it specifies is not on the same connected
  2371.             (sub-) net through which the Redirect arrived [INTRO:2,
  2372.             Appendix A], or if the source of the Redirect is not the
  2373.             current first-hop gateway for the specified destination (see
  2374.             Section 3.3.1).
  2375.  
  2376.          3.2.2.3  Source Quench: RFC-792
  2377.  
  2378.             A host MAY send a Source Quench message if it is
  2379.             approaching, or has reached, the point at which it is forced
  2380.             to discard incoming datagrams due to a shortage of
  2381.             reassembly buffers or other resources.  See Section 2.2.3 of
  2382.             [INTRO:2] for suggestions on when to send Source Quench.
  2383.  
  2384.             If a Source Quench message is received, the IP layer MUST
  2385.             report it to the transport layer (or ICMP processing). In
  2386.             general, the transport or application layer SHOULD implement
  2387.             a mechanism to respond to Source Quench for any protocol
  2388.             that can send a sequence of datagrams to the same
  2389.             destination and which can reasonably be expected to maintain
  2390.             enough state information to make this feasible.  See Section
  2391.             4 for the handling of Source Quench by TCP and UDP.
  2392.  
  2393.             DISCUSSION:
  2394.                  A Source Quench may be generated by the target host or
  2395.                  by some gateway in the path of a datagram.  The host
  2396.                  receiving a Source Quench should throttle itself back
  2397.                  for a period of time, then gradually increase the
  2398.                  transmission rate again.  The mechanism to respond to
  2399.                  Source Quench may be in the transport layer (for
  2400.                  connection-oriented protocols like TCP) or in the
  2401.                  application layer (for protocols that are built on top
  2402.                  of UDP).
  2403.  
  2404.                  A mechanism has been proposed [IP:14] to make the IP
  2405.                  layer respond directly to Source Quench by controlling
  2406.                  the rate at which datagrams are sent, however, this
  2407.                  proposal is currently experimental and not currently
  2408.                  recommended.
  2409.  
  2410.          3.2.2.4  Time Exceeded: RFC-792
  2411.  
  2412.             An incoming Time Exceeded message MUST be passed to the
  2413.             transport layer.
  2414.  
  2415.  
  2416.  
  2417. Internet Engineering Task Force                                [Page 41]
  2418.  
  2419.  
  2420.  
  2421.  
  2422. RFC1122                      INTERNET LAYER                 October 1989
  2423.  
  2424.  
  2425.             DISCUSSION:
  2426.                  A gateway will send a Time Exceeded Code 0 (In Transit)
  2427.                  message when it discards a datagram due to an expired
  2428.                  TTL field.  This indicates either a gateway routing
  2429.                  loop or too small an initial TTL value.
  2430.  
  2431.                  A host may receive a Time Exceeded Code 1 (Reassembly
  2432.                  Timeout) message from a destination host that has timed
  2433.                  out and discarded an incomplete datagram; see Section
  2434.                  3.3.2 below.  In the future, receipt of this message
  2435.                  might be part of some "MTU discovery" procedure, to
  2436.                  discover the maximum datagram size that can be sent on
  2437.                  the path without fragmentation.
  2438.  
  2439.          3.2.2.5  Parameter Problem: RFC-792
  2440.  
  2441.             A host SHOULD generate Parameter Problem messages.  An
  2442.             incoming Parameter Problem message MUST be passed to the
  2443.             transport layer, and it MAY be reported to the user.
  2444.  
  2445.             DISCUSSION:
  2446.                  The ICMP Parameter Problem message is sent to the
  2447.                  source host for any problem not specifically covered by
  2448.                  another ICMP message.  Receipt of a Parameter Problem
  2449.                  message generally indicates some local or remote
  2450.                  implementation error.
  2451.  
  2452.             A new variant on the Parameter Problem message is hereby
  2453.             defined:
  2454.               Code 1 = required option is missing.
  2455.  
  2456.             DISCUSSION:
  2457.                  This variant is currently in use in the military
  2458.                  community for a missing security option.
  2459.  
  2460.          3.2.2.6  Echo Request/Reply: RFC-792
  2461.  
  2462.             Every host MUST implement an ICMP Echo server function that
  2463.             receives Echo Requests and sends corresponding Echo Replies.
  2464.             A host SHOULD also implement an application-layer interface
  2465.             for sending an Echo Request and receiving an Echo Reply, for
  2466.             diagnostic purposes.
  2467.  
  2468.             An ICMP Echo Request destined to an IP broadcast or IP
  2469.             multicast address MAY be silently discarded.
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476. Internet Engineering Task Force                                [Page 42]
  2477.  
  2478.  
  2479.  
  2480.  
  2481. RFC1122                      INTERNET LAYER                 October 1989
  2482.  
  2483.  
  2484.             DISCUSSION:
  2485.                  This neutral provision results from a passionate debate
  2486.                  between those who feel that ICMP Echo to a broadcast
  2487.                  address provides a valuable diagnostic capability and
  2488.                  those who feel that misuse of this feature can too
  2489.                  easily create packet storms.
  2490.  
  2491.             The IP source address in an ICMP Echo Reply MUST be the same
  2492.             as the specific-destination address (defined in Section
  2493.             3.2.1.3) of the corresponding ICMP Echo Request message.
  2494.  
  2495.             Data received in an ICMP Echo Request MUST be entirely
  2496.             included in the resulting Echo Reply.  However, if sending
  2497.             the Echo Reply requires intentional fragmentation that is
  2498.             not implemented, the datagram MUST be truncated to maximum
  2499.             transmission size (see Section 3.3.3) and sent.
  2500.  
  2501.             Echo Reply messages MUST be passed to the ICMP user
  2502.             interface, unless the corresponding Echo Request originated
  2503.             in the IP layer.
  2504.  
  2505.             If a Record Route and/or Time Stamp option is received in an
  2506.             ICMP Echo Request, this option (these options) SHOULD be
  2507.             updated to include the current host and included in the IP
  2508.             header of the Echo Reply message, without "truncation".
  2509.             Thus, the recorded route will be for the entire round trip.
  2510.  
  2511.             If a Source Route option is received in an ICMP Echo
  2512.             Request, the return route MUST be reversed and used as a
  2513.             Source Route option for the Echo Reply message.
  2514.  
  2515.          3.2.2.7  Information Request/Reply: RFC-792
  2516.  
  2517.             A host SHOULD NOT implement these messages.
  2518.  
  2519.             DISCUSSION:
  2520.                  The Information Request/Reply pair was intended to
  2521.                  support self-configuring systems such as diskless
  2522.                  workstations, to allow them to discover their IP
  2523.                  network numbers at boot time.  However, the RARP and
  2524.                  BOOTP protocols provide better mechanisms for a host to
  2525.                  discover its own IP address.
  2526.  
  2527.          3.2.2.8  Timestamp and Timestamp Reply: RFC-792
  2528.  
  2529.             A host MAY implement Timestamp and Timestamp Reply.  If they
  2530.             are implemented, the following rules MUST be followed.
  2531.  
  2532.  
  2533.  
  2534.  
  2535. Internet Engineering Task Force                                [Page 43]
  2536.  
  2537.  
  2538.  
  2539.  
  2540. RFC1122                      INTERNET LAYER                 October 1989
  2541.  
  2542.  
  2543.             o    The ICMP Timestamp server function returns a Timestamp
  2544.                  Reply to every Timestamp message that is received.  If
  2545.                  this function is implemented, it SHOULD be designed for
  2546.                  minimum variability in delay (e.g., implemented in the
  2547.                  kernel to avoid delay in scheduling a user process).
  2548.  
  2549.             The following cases for Timestamp are to be handled
  2550.             according to the corresponding rules for ICMP Echo:
  2551.  
  2552.             o    An ICMP Timestamp Request message to an IP broadcast or
  2553.                  IP multicast address MAY be silently discarded.
  2554.  
  2555.             o    The IP source address in an ICMP Timestamp Reply MUST
  2556.                  be the same as the specific-destination address of the
  2557.                  corresponding Timestamp Request message.
  2558.  
  2559.             o    If a Source-route option is received in an ICMP Echo
  2560.                  Request, the return route MUST be reversed and used as
  2561.                  a Source Route option for the Timestamp Reply message.
  2562.  
  2563.             o    If a Record Route and/or Timestamp option is received
  2564.                  in a Timestamp Request, this (these) option(s) SHOULD
  2565.                  be updated to include the current host and included in
  2566.                  the IP header of the Timestamp Reply message.
  2567.  
  2568.             o    Incoming Timestamp Reply messages MUST be passed up to
  2569.                  the ICMP user interface.
  2570.  
  2571.             The preferred form for a timestamp value (the "standard
  2572.             value") is in units of milliseconds since midnight Universal
  2573.             Time.  However, it may be difficult to provide this value
  2574.             with millisecond resolution.  For example, many systems use
  2575.             clocks that update only at line frequency, 50 or 60 times
  2576.             per second.  Therefore, some latitude is allowed in a
  2577.             "standard value":
  2578.  
  2579.             (a)  A "standard value" MUST be updated at least 15 times
  2580.                  per second (i.e., at most the six low-order bits of the
  2581.                  value may be undefined).
  2582.  
  2583.             (b)  The accuracy of a "standard value" MUST approximate
  2584.                  that of operator-set CPU clocks, i.e., correct within a
  2585.                  few minutes.
  2586.  
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594. Internet Engineering Task Force                                [Page 44]
  2595.  
  2596.  
  2597.  
  2598.  
  2599. RFC1122                      INTERNET LAYER                 October 1989
  2600.  
  2601.  
  2602.          3.2.2.9  Address Mask Request/Reply: RFC-950
  2603.  
  2604.             A host MUST support the first, and MAY implement all three,
  2605.             of the following methods for determining the address mask(s)
  2606.             corresponding to its IP address(es):
  2607.  
  2608.             (1)  static configuration information;
  2609.  
  2610.             (2)  obtaining the address mask(s) dynamically as a side-
  2611.                  effect of the system initialization process (see
  2612.                  [INTRO:1]); and
  2613.  
  2614.             (3)  sending ICMP Address Mask Request(s) and receiving ICMP
  2615.                  Address Mask Reply(s).
  2616.  
  2617.             The choice of method to be used in a particular host MUST be
  2618.             configurable.
  2619.  
  2620.             When method (3), the use of Address Mask messages, is
  2621.             enabled, then:
  2622.  
  2623.             (a)  When it initializes, the host MUST broadcast an Address
  2624.                  Mask Request message on the connected network
  2625.                  corresponding to the IP address.  It MUST retransmit
  2626.                  this message a small number of times if it does not
  2627.                  receive an immediate Address Mask Reply.
  2628.  
  2629.             (b)  Until it has received an Address Mask Reply, the host
  2630.                  SHOULD assume a mask appropriate for the address class
  2631.                  of the IP address, i.e., assume that the connected
  2632.                  network is not subnetted.
  2633.  
  2634.             (c)  The first Address Mask Reply message received MUST be
  2635.                  used to set the address mask corresponding to the
  2636.                  particular local IP address.  This is true even if the
  2637.                  first Address Mask Reply message is "unsolicited", in
  2638.                  which case it will have been broadcast and may arrive
  2639.                  after the host has ceased to retransmit Address Mask
  2640.                  Requests.  Once the mask has been set by an Address
  2641.                  Mask Reply, later Address Mask Reply messages MUST be
  2642.                  (silently) ignored.
  2643.  
  2644.             Conversely, if Address Mask messages are disabled, then no
  2645.             ICMP Address Mask Requests will be sent, and any ICMP
  2646.             Address Mask Replies received for that local IP address MUST
  2647.             be (silently) ignored.
  2648.  
  2649.             A host SHOULD make some reasonableness check on any address
  2650.  
  2651.  
  2652.  
  2653. Internet Engineering Task Force                                [Page 45]
  2654.  
  2655.  
  2656.  
  2657.  
  2658. RFC1122                      INTERNET LAYER                 October 1989
  2659.  
  2660.  
  2661.             mask it installs; see IMPLEMENTATION section below.
  2662.  
  2663.             A system MUST NOT send an Address Mask Reply unless it is an
  2664.             authoritative agent for address masks.  An authoritative
  2665.             agent may be a host or a gateway, but it MUST be explicitly
  2666.             configured as a address mask agent.  Receiving an address
  2667.             mask via an Address Mask Reply does not give the receiver
  2668.             authority and MUST NOT be used as the basis for issuing
  2669.             Address Mask Replies.
  2670.  
  2671.             With a statically configured address mask, there SHOULD be
  2672.             an additional configuration flag that determines whether the
  2673.             host is to act as an authoritative agent for this mask,
  2674.             i.e., whether it will answer Address Mask Request messages
  2675.             using this mask.
  2676.  
  2677.             If it is configured as an agent, the host MUST broadcast an
  2678.             Address Mask Reply for the mask on the appropriate interface
  2679.             when it initializes.
  2680.  
  2681.             See "System Initialization" in [INTRO:1] for more
  2682.             information about the use of Address Mask Request/Reply
  2683.             messages.
  2684.  
  2685.             DISCUSSION
  2686.                  Hosts that casually send Address Mask Replies with
  2687.                  invalid address masks have often been a serious
  2688.                  nuisance.  To prevent this, Address Mask Replies ought
  2689.                  to be sent only by authoritative agents that have been
  2690.                  selected by explicit administrative action.
  2691.  
  2692.                  When an authoritative agent receives an Address Mask
  2693.                  Request message, it will send a unicast Address Mask
  2694.                  Reply to the source IP address.  If the network part of
  2695.                  this address is zero (see (a) and (b) in 3.2.1.3), the
  2696.                  Reply will be broadcast.
  2697.  
  2698.                  Getting no reply to its Address Mask Request messages,
  2699.                  a host will assume there is no agent and use an
  2700.                  unsubnetted mask, but the agent may be only temporarily
  2701.                  unreachable.  An agent will broadcast an unsolicited
  2702.                  Address Mask Reply whenever it initializes, in order to
  2703.                  update the masks of all hosts that have initialized in
  2704.                  the meantime.
  2705.  
  2706.             IMPLEMENTATION:
  2707.                  The following reasonableness check on an address mask
  2708.                  is suggested: the mask is not all 1 bits, and it is
  2709.  
  2710.  
  2711.  
  2712. Internet Engineering Task Force                                [Page 46]
  2713.  
  2714.  
  2715.  
  2716.  
  2717. RFC1122                      INTERNET LAYER                 October 1989
  2718.  
  2719.  
  2720.                  either zero or else the 8 highest-order bits are on.
  2721.  
  2722.       3.2.3  Internet Group Management Protocol IGMP
  2723.  
  2724.          IGMP [IP:4] is a protocol used between hosts and gateways on a
  2725.          single network to establish hosts' membership in particular
  2726.          multicast groups.  The gateways use this information, in
  2727.          conjunction with a multicast routing protocol, to support IP
  2728.          multicasting across the Internet.
  2729.  
  2730.          At this time, implementation of IGMP is OPTIONAL; see Section
  2731.          3.3.7 for more information.  Without IGMP, a host can still
  2732.          participate in multicasting local to its connected networks.
  2733.  
  2734.    3.3  SPECIFIC ISSUES
  2735.  
  2736.       3.3.1  Routing Outbound Datagrams
  2737.  
  2738.          The IP layer chooses the correct next hop for each datagram it
  2739.          sends.  If the destination is on a connected network, the
  2740.          datagram is sent directly to the destination host; otherwise,
  2741.          it has to be routed to a gateway on a connected network.
  2742.  
  2743.          3.3.1.1  Local/Remote Decision
  2744.  
  2745.             To decide if the destination is on a connected network, the
  2746.             following algorithm MUST be used [see IP:3]:
  2747.  
  2748.             (a)  The address mask (particular to a local IP address for
  2749.                  a multihomed host) is a 32-bit mask that selects the
  2750.                  network number and subnet number fields of the
  2751.                  corresponding IP address.
  2752.  
  2753.             (b)  If the IP destination address bits extracted by the
  2754.                  address mask match the IP source address bits extracted
  2755.                  by the same mask, then the destination is on the
  2756.                  corresponding connected network, and the datagram is to
  2757.                  be transmitted directly to the destination host.
  2758.  
  2759.             (c)  If not, then the destination is accessible only through
  2760.                  a gateway.  Selection of a gateway is described below
  2761.                  (3.3.1.2).
  2762.  
  2763.             A special-case destination address is handled as follows:
  2764.  
  2765.             *    For a limited broadcast or a multicast address, simply
  2766.                  pass the datagram to the link layer for the appropriate
  2767.                  interface.
  2768.  
  2769.  
  2770.  
  2771. Internet Engineering Task Force                                [Page 47]
  2772.  
  2773.  
  2774.  
  2775.  
  2776. RFC1122                      INTERNET LAYER                 October 1989
  2777.  
  2778.  
  2779.             *    For a (network or subnet) directed broadcast, the
  2780.                  datagram can use the standard routing algorithms.
  2781.  
  2782.             The host IP layer MUST operate correctly in a minimal
  2783.             network environment, and in particular, when there are no
  2784.             gateways.  For example, if the IP layer of a host insists on
  2785.             finding at least one gateway to initialize, the host will be
  2786.             unable to operate on a single isolated broadcast net.
  2787.  
  2788.          3.3.1.2  Gateway Selection
  2789.  
  2790.             To efficiently route a series of datagrams to the same
  2791.             destination, the source host MUST keep a "route cache" of
  2792.             mappings to next-hop gateways.  A host uses the following
  2793.             basic algorithm on this cache to route a datagram; this
  2794.             algorithm is designed to put the primary routing burden on
  2795.             the gateways [IP:11].
  2796.  
  2797.             (a)  If the route cache contains no information for a
  2798.                  particular destination, the host chooses a "default"
  2799.                  gateway and sends the datagram to it.  It also builds a
  2800.                  corresponding Route Cache entry.
  2801.  
  2802.             (b)  If that gateway is not the best next hop to the
  2803.                  destination, the gateway will forward the datagram to
  2804.                  the best next-hop gateway and return an ICMP Redirect
  2805.                  message to the source host.
  2806.  
  2807.             (c)  When it receives a Redirect, the host updates the
  2808.                  next-hop gateway in the appropriate route cache entry,
  2809.                  so later datagrams to the same destination will go
  2810.                  directly to the best gateway.
  2811.  
  2812.             Since the subnet mask appropriate to the destination address
  2813.             is generally not known, a Network Redirect message SHOULD be
  2814.             treated identically to a Host Redirect message; i.e., the
  2815.             cache entry for the destination host (only) would be updated
  2816.             (or created, if an entry for that host did not exist) for
  2817.             the new gateway.
  2818.  
  2819.             DISCUSSION:
  2820.                  This recommendation is to protect against gateways that
  2821.                  erroneously send Network Redirects for a subnetted
  2822.                  network, in violation of the gateway requirements
  2823.                  [INTRO:2].
  2824.  
  2825.             When there is no route cache entry for the destination host
  2826.             address (and the destination is not on the connected
  2827.  
  2828.  
  2829.  
  2830. Internet Engineering Task Force                                [Page 48]
  2831.  
  2832.  
  2833.  
  2834.  
  2835. RFC1122                      INTERNET LAYER                 October 1989
  2836.  
  2837.  
  2838.             network), the IP layer MUST pick a gateway from its list of
  2839.             "default" gateways.  The IP layer MUST support multiple
  2840.             default gateways.
  2841.  
  2842.             As an extra feature, a host IP layer MAY implement a table
  2843.             of "static routes".  Each such static route MAY include a
  2844.             flag specifying whether it may be overridden by ICMP
  2845.             Redirects.
  2846.  
  2847.             DISCUSSION:
  2848.                  A host generally needs to know at least one default
  2849.                  gateway to get started.  This information can be
  2850.                  obtained from a configuration file or else from the
  2851.                  host startup sequence, e.g., the BOOTP protocol (see
  2852.                  [INTRO:1]).
  2853.  
  2854.                  It has been suggested that a host can augment its list
  2855.                  of default gateways by recording any new gateways it
  2856.                  learns about.  For example, it can record every gateway
  2857.                  to which it is ever redirected.  Such a feature, while
  2858.                  possibly useful in some circumstances, may cause
  2859.                  problems in other cases (e.g., gateways are not all
  2860.                  equal), and it is not recommended.
  2861.  
  2862.                  A static route is typically a particular preset mapping
  2863.                  from destination host or network into a particular
  2864.                  next-hop gateway; it might also depend on the Type-of-
  2865.                  Service (see next section).  Static routes would be set
  2866.                  up by system administrators to override the normal
  2867.                  automatic routing mechanism, to handle exceptional
  2868.                  situations.  However, any static routing information is
  2869.                  a potential source of failure as configurations change
  2870.                  or equipment fails.
  2871.  
  2872.          3.3.1.3  Route Cache
  2873.  
  2874.             Each route cache entry needs to include the following
  2875.             fields:
  2876.  
  2877.             (1)  Local IP address (for a multihomed host)
  2878.  
  2879.             (2)  Destination IP address
  2880.  
  2881.             (3)  Type(s)-of-Service
  2882.  
  2883.             (4)  Next-hop gateway IP address
  2884.  
  2885.             Field (2) MAY be the full IP address of the destination
  2886.  
  2887.  
  2888.  
  2889. Internet Engineering Task Force                                [Page 49]
  2890.  
  2891.  
  2892.  
  2893.  
  2894. RFC1122                      INTERNET LAYER                 October 1989
  2895.  
  2896.  
  2897.             host, or only the destination network number.  Field (3),
  2898.             the TOS, SHOULD be included.
  2899.  
  2900.             See Section 3.3.4.2 for a discussion of the implications of
  2901.             multihoming for the lookup procedure in this cache.
  2902.  
  2903.             DISCUSSION:
  2904.                  Including the Type-of-Service field in the route cache
  2905.                  and considering it in the host route algorithm will
  2906.                  provide the necessary mechanism for the future when
  2907.                  Type-of-Service routing is commonly used in the
  2908.                  Internet.  See Section 3.2.1.6.
  2909.  
  2910.                  Each route cache entry defines the endpoints of an
  2911.                  Internet path.  Although the connecting path may change
  2912.                  dynamically in an arbitrary way, the transmission
  2913.                  characteristics of the path tend to remain
  2914.                  approximately constant over a time period longer than a
  2915.                  single typical host-host transport connection.
  2916.                  Therefore, a route cache entry is a natural place to
  2917.                  cache data on the properties of the path.  Examples of
  2918.                  such properties might be the maximum unfragmented
  2919.                  datagram size (see Section 3.3.3), or the average
  2920.                  round-trip delay measured by a transport protocol.
  2921.                  This data will generally be both gathered and used by a
  2922.                  higher layer protocol, e.g., by TCP, or by an
  2923.                  application using UDP.  Experiments are currently in
  2924.                  progress on caching path properties in this manner.
  2925.  
  2926.                  There is no consensus on whether the route cache should
  2927.                  be keyed on destination host addresses alone, or allow
  2928.                  both host and network addresses.  Those who favor the
  2929.                  use of only host addresses argue that:
  2930.  
  2931.                  (1)  As required in Section 3.3.1.2, Redirect messages
  2932.                       will generally result in entries keyed on
  2933.                       destination host addresses; the simplest and most
  2934.                       general scheme would be to use host addresses
  2935.                       always.
  2936.  
  2937.                  (2)  The IP layer may not always know the address mask
  2938.                       for a network address in a complex subnetted
  2939.                       environment.
  2940.  
  2941.                  (3)  The use of only host addresses allows the
  2942.                       destination address to be used as a pure 32-bit
  2943.                       number, which may allow the Internet architecture
  2944.                       to be more easily extended in the future without
  2945.  
  2946.  
  2947.  
  2948. Internet Engineering Task Force                                [Page 50]
  2949.  
  2950.  
  2951.  
  2952.  
  2953. RFC1122                      INTERNET LAYER                 October 1989
  2954.  
  2955.  
  2956.                       any change to the hosts.
  2957.  
  2958.                  The opposing view is that allowing a mixture of
  2959.                  destination hosts and networks in the route cache:
  2960.  
  2961.                  (1)  Saves memory space.
  2962.  
  2963.                  (2)  Leads to a simpler data structure, easily
  2964.                       combining the cache with the tables of default and
  2965.                       static routes (see below).
  2966.  
  2967.                  (3)  Provides a more useful place to cache path
  2968.                       properties, as discussed earlier.
  2969.  
  2970.  
  2971.             IMPLEMENTATION:
  2972.                  The cache needs to be large enough to include entries
  2973.                  for the maximum number of destination hosts that may be
  2974.                  in use at one time.
  2975.  
  2976.                  A route cache entry may also include control
  2977.                  information used to choose an entry for replacement.
  2978.                  This might take the form of a "recently used" bit, a
  2979.                  use count, or a last-used timestamp, for example.  It
  2980.                  is recommended that it include the time of last
  2981.                  modification of the entry, for diagnostic purposes.
  2982.  
  2983.                  An implementation may wish to reduce the overhead of
  2984.                  scanning the route cache for every datagram to be
  2985.                  transmitted.  This may be accomplished with a hash
  2986.                  table to speed the lookup, or by giving a connection-
  2987.                  oriented transport protocol a "hint" or temporary
  2988.                  handle on the appropriate cache entry, to be passed to
  2989.                  the IP layer with each subsequent datagram.
  2990.  
  2991.                  Although we have described the route cache, the lists
  2992.                  of default gateways, and a table of static routes as
  2993.                  conceptually distinct, in practice they may be combined
  2994.                  into a single "routing table" data structure.
  2995.  
  2996.          3.3.1.4  Dead Gateway Detection
  2997.  
  2998.             The IP layer MUST be able to detect the failure of a "next-
  2999.             hop" gateway that is listed in its route cache and to choose
  3000.             an alternate gateway (see Section 3.3.1.5).
  3001.  
  3002.             Dead gateway detection is covered in some detail in RFC-816
  3003.             [IP:11]. Experience to date has not produced a complete
  3004.  
  3005.  
  3006.  
  3007. Internet Engineering Task Force                                [Page 51]
  3008.  
  3009.  
  3010.  
  3011.  
  3012. RFC1122                      INTERNET LAYER                 October 1989
  3013.  
  3014.  
  3015.             algorithm which is totally satisfactory, though it has
  3016.             identified several forbidden paths and promising techniques.
  3017.  
  3018.             *    A particular gateway SHOULD NOT be used indefinitely in
  3019.                  the absence of positive indications that it is
  3020.                  functioning.
  3021.  
  3022.             *    Active probes such as "pinging" (i.e., using an ICMP
  3023.                  Echo Request/Reply exchange) are expensive and scale
  3024.                  poorly.  In particular, hosts MUST NOT actively check
  3025.                  the status of a first-hop gateway by simply pinging the
  3026.                  gateway continuously.
  3027.  
  3028.             *    Even when it is the only effective way to verify a
  3029.                  gateway's status, pinging MUST be used only when
  3030.                  traffic is being sent to the gateway and when there is
  3031.                  no other positive indication to suggest that the
  3032.                  gateway is functioning.
  3033.  
  3034.             *    To avoid pinging, the layers above and/or below the
  3035.                  Internet layer SHOULD be able to give "advice" on the
  3036.                  status of route cache entries when either positive
  3037.                  (gateway OK) or negative (gateway dead) information is
  3038.                  available.
  3039.  
  3040.  
  3041.             DISCUSSION:
  3042.                  If an implementation does not include an adequate
  3043.                  mechanism for detecting a dead gateway and re-routing,
  3044.                  a gateway failure may cause datagrams to apparently
  3045.                  vanish into a "black hole".  This failure can be
  3046.                  extremely confusing for users and difficult for network
  3047.                  personnel to debug.
  3048.  
  3049.                  The dead-gateway detection mechanism must not cause
  3050.                  unacceptable load on the host, on connected networks,
  3051.                  or on first-hop gateway(s).  The exact constraints on
  3052.                  the timeliness of dead gateway detection and on
  3053.                  acceptable load may vary somewhat depending on the
  3054.                  nature of the host's mission, but a host generally
  3055.                  needs to detect a failed first-hop gateway quickly
  3056.                  enough that transport-layer connections will not break
  3057.                  before an alternate gateway can be selected.
  3058.  
  3059.                  Passing advice from other layers of the protocol stack
  3060.                  complicates the interfaces between the layers, but it
  3061.                  is the preferred approach to dead gateway detection.
  3062.                  Advice can come from almost any part of the IP/TCP
  3063.  
  3064.  
  3065.  
  3066. Internet Engineering Task Force                                [Page 52]
  3067.  
  3068.  
  3069.  
  3070.  
  3071. RFC1122                      INTERNET LAYER                 October 1989
  3072.  
  3073.  
  3074.                  architecture, but it is expected to come primarily from
  3075.                  the transport and link layers.  Here are some possible
  3076.                  sources for gateway advice:
  3077.  
  3078.                  o    TCP or any connection-oriented transport protocol
  3079.                       should be able to give negative advice, e.g.,
  3080.                       triggered by excessive retransmissions.
  3081.  
  3082.                  o    TCP may give positive advice when (new) data is
  3083.                       acknowledged.  Even though the route may be
  3084.                       asymmetric, an ACK for new data proves that the
  3085.                       acknowleged data must have been transmitted
  3086.                       successfully.
  3087.  
  3088.                  o    An ICMP Redirect message from a particular gateway
  3089.                       should be used as positive advice about that
  3090.                       gateway.
  3091.  
  3092.                  o    Link-layer information that reliably detects and
  3093.                       reports host failures (e.g., ARPANET Destination
  3094.                       Dead messages) should be used as negative advice.
  3095.  
  3096.                  o    Failure to ARP or to re-validate ARP mappings may
  3097.                       be used as negative advice for the corresponding
  3098.                       IP address.
  3099.  
  3100.                  o    Packets arriving from a particular link-layer
  3101.                       address are evidence that the system at this
  3102.                       address is alive.  However, turning this
  3103.                       information into advice about gateways requires
  3104.                       mapping the link-layer address into an IP address,
  3105.                       and then checking that IP address against the
  3106.                       gateways pointed to by the route cache.  This is
  3107.                       probably prohibitively inefficient.
  3108.  
  3109.                  Note that positive advice that is given for every
  3110.                  datagram received may cause unacceptable overhead in
  3111.                  the implementation.
  3112.  
  3113.                  While advice might be passed using required arguments
  3114.                  in all interfaces to the IP layer, some transport and
  3115.                  application layer protocols cannot deduce the correct
  3116.                  advice.  These interfaces must therefore allow a
  3117.                  neutral value for advice, since either always-positive
  3118.                  or always-negative advice leads to incorrect behavior.
  3119.  
  3120.                  There is another technique for dead gateway detection
  3121.                  that has been commonly used but is not recommended.
  3122.  
  3123.  
  3124.  
  3125. Internet Engineering Task Force                                [Page 53]
  3126.  
  3127.  
  3128.  
  3129.  
  3130. RFC1122                      INTERNET LAYER                 October 1989
  3131.  
  3132.  
  3133.                  This technique depends upon the host passively
  3134.                  receiving ("wiretapping") the Interior Gateway Protocol
  3135.                  (IGP) datagrams that the gateways are broadcasting to
  3136.                  each other.  This approach has the drawback that a host
  3137.                  needs to recognize all the interior gateway protocols
  3138.                  that gateways may use (see [INTRO:2]).  In addition, it
  3139.                  only works on a broadcast network.
  3140.  
  3141.                  At present, pinging (i.e., using ICMP Echo messages) is
  3142.                  the mechanism for gateway probing when absolutely
  3143.                  required.  A successful ping guarantees that the
  3144.                  addressed interface and its associated machine are up,
  3145.                  but it does not guarantee that the machine is a gateway
  3146.                  as opposed to a host.  The normal inference is that if
  3147.                  a Redirect or other evidence indicates that a machine
  3148.                  was a gateway, successful pings will indicate that the
  3149.                  machine is still up and hence still a gateway.
  3150.                  However, since a host silently discards packets that a
  3151.                  gateway would forward or redirect, this assumption
  3152.                  could sometimes fail.  To avoid this problem, a new
  3153.                  ICMP message under development will ask "are you a
  3154.                  gateway?"
  3155.  
  3156.             IMPLEMENTATION:
  3157.                  The following specific algorithm has been suggested:
  3158.  
  3159.                  o    Associate a "reroute timer" with each gateway
  3160.                       pointed to by the route cache.  Initialize the
  3161.                       timer to a value Tr, which must be small enough to
  3162.                       allow detection of a dead gateway before transport
  3163.                       connections time out.
  3164.  
  3165.                  o    Positive advice would reset the reroute timer to
  3166.                       Tr.  Negative advice would reduce or zero the
  3167.                       reroute timer.
  3168.  
  3169.                  o    Whenever the IP layer used a particular gateway to
  3170.                       route a datagram, it would check the corresponding
  3171.                       reroute timer.  If the timer had expired (reached
  3172.                       zero), the IP layer would send a ping to the
  3173.                       gateway, followed immediately by the datagram.
  3174.  
  3175.                  o    The ping (ICMP Echo) would be sent again if
  3176.                       necessary, up to N times.  If no ping reply was
  3177.                       received in N tries, the gateway would be assumed
  3178.                       to have failed, and a new first-hop gateway would
  3179.                       be chosen for all cache entries pointing to the
  3180.                       failed gateway.
  3181.  
  3182.  
  3183.  
  3184. Internet Engineering Task Force                                [Page 54]
  3185.  
  3186.  
  3187.  
  3188.  
  3189. RFC1122                      INTERNET LAYER                 October 1989
  3190.  
  3191.  
  3192.                  Note that the size of Tr is inversely related to the
  3193.                  amount of advice available.  Tr should be large enough
  3194.                  to insure that:
  3195.  
  3196.                  *    Any pinging will be at a low level (e.g., <10%) of
  3197.                       all packets sent to a gateway from the host, AND
  3198.  
  3199.                  *    pinging is infrequent (e.g., every 3 minutes)
  3200.  
  3201.                  Since the recommended algorithm is concerned with the
  3202.                  gateways pointed to by route cache entries, rather than
  3203.                  the cache entries themselves, a two level data
  3204.                  structure (perhaps coordinated with ARP or similar
  3205.                  caches) may be desirable for implementing a route
  3206.                  cache.
  3207.  
  3208.          3.3.1.5  New Gateway Selection
  3209.  
  3210.             If the failed gateway is not the current default, the IP
  3211.             layer can immediately switch to a default gateway.  If it is
  3212.             the current default that failed, the IP layer MUST select a
  3213.             different default gateway (assuming more than one default is
  3214.             known) for the failed route and for establishing new routes.
  3215.  
  3216.             DISCUSSION:
  3217.                  When a gateway does fail, the other gateways on the
  3218.                  connected network will learn of the failure through
  3219.                  some inter-gateway routing protocol.  However, this
  3220.                  will not happen instantaneously, since gateway routing
  3221.                  protocols typically have a settling time of 30-60
  3222.                  seconds.  If the host switches to an alternative
  3223.                  gateway before the gateways have agreed on the failure,
  3224.                  the new target gateway will probably forward the
  3225.                  datagram to the failed gateway and send a Redirect back
  3226.                  to the host pointing to the failed gateway (!).  The
  3227.                  result is likely to be a rapid oscillation in the
  3228.                  contents of the host's route cache during the gateway
  3229.                  settling period.  It has been proposed that the dead-
  3230.                  gateway logic should include some hysteresis mechanism
  3231.                  to prevent such oscillations.  However, experience has
  3232.                  not shown any harm from such oscillations, since
  3233.                  service cannot be restored to the host until the
  3234.                  gateways' routing information does settle down.
  3235.  
  3236.             IMPLEMENTATION:
  3237.                  One implementation technique for choosing a new default
  3238.                  gateway is to simply round-robin among the default
  3239.                  gateways in the host's list.  Another is to rank the
  3240.  
  3241.  
  3242.  
  3243. Internet Engineering Task Force                                [Page 55]
  3244.  
  3245.  
  3246.  
  3247.  
  3248. RFC1122                      INTERNET LAYER                 October 1989
  3249.  
  3250.  
  3251.                  gateways in priority order, and when the current
  3252.                  default gateway is not the highest priority one, to
  3253.                  "ping" the higher-priority gateways slowly to detect
  3254.                  when they return to service.  This pinging can be at a
  3255.                  very low rate, e.g., 0.005 per second.
  3256.  
  3257.          3.3.1.6  Initialization
  3258.  
  3259.             The following information MUST be configurable:
  3260.  
  3261.             (1)  IP address(es).
  3262.  
  3263.             (2)  Address mask(s).
  3264.  
  3265.             (3)  A list of default gateways, with a preference level.
  3266.  
  3267.             A manual method of entering this configuration data MUST be
  3268.             provided.  In addition, a variety of methods can be used to
  3269.             determine this information dynamically; see the section on
  3270.             "Host Initialization" in [INTRO:1].
  3271.  
  3272.             DISCUSSION:
  3273.                  Some host implementations use "wiretapping" of gateway
  3274.                  protocols on a broadcast network to learn what gateways
  3275.                  exist.  A standard method for default gateway discovery
  3276.                  is under development.
  3277.  
  3278.       3.3.2  Reassembly
  3279.  
  3280.          The IP layer MUST implement reassembly of IP datagrams.
  3281.  
  3282.          We designate the largest datagram size that can be reassembled
  3283.          by EMTU_R ("Effective MTU to receive"); this is sometimes
  3284.          called the "reassembly buffer size".  EMTU_R MUST be greater
  3285.          than or equal to 576, SHOULD be either configurable or
  3286.          indefinite, and SHOULD be greater than or equal to the MTU of
  3287.          the connected network(s).
  3288.  
  3289.          DISCUSSION:
  3290.               A fixed EMTU_R limit should not be built into the code
  3291.               because some application layer protocols require EMTU_R
  3292.               values larger than 576.
  3293.  
  3294.          IMPLEMENTATION:
  3295.               An implementation may use a contiguous reassembly buffer
  3296.               for each datagram, or it may use a more complex data
  3297.               structure that places no definite limit on the reassembled
  3298.               datagram size; in the latter case, EMTU_R is said to be
  3299.  
  3300.  
  3301.  
  3302. Internet Engineering Task Force                                [Page 56]
  3303.  
  3304.  
  3305.  
  3306.  
  3307. RFC1122                      INTERNET LAYER                 October 1989
  3308.  
  3309.  
  3310.               "indefinite".
  3311.  
  3312.               Logically, reassembly is performed by simply copying each
  3313.               fragment into the packet buffer at the proper offset.
  3314.               Note that fragments may overlap if successive
  3315.               retransmissions use different packetizing but the same
  3316.               reassembly Id.
  3317.  
  3318.               The tricky part of reassembly is the bookkeeping to
  3319.               determine when all bytes of the datagram have been
  3320.               reassembled.  We recommend Clark's algorithm [IP:10] that
  3321.               requires no additional data space for the bookkeeping.
  3322.               However, note that, contrary to [IP:10], the first
  3323.               fragment header needs to be saved for inclusion in a
  3324.               possible ICMP Time Exceeded (Reassembly Timeout) message.
  3325.  
  3326.          There MUST be a mechanism by which the transport layer can
  3327.          learn MMS_R, the maximum message size that can be received and
  3328.          reassembled in an IP datagram (see GET_MAXSIZES calls in
  3329.          Section 3.4).  If EMTU_R is not indefinite, then the value of
  3330.          MMS_R is given by:
  3331.  
  3332.             MMS_R = EMTU_R - 20
  3333.  
  3334.          since 20 is the minimum size of an IP header.
  3335.  
  3336.          There MUST be a reassembly timeout.  The reassembly timeout
  3337.          value SHOULD be a fixed value, not set from the remaining TTL.
  3338.          It is recommended that the value lie between 60 seconds and 120
  3339.          seconds.  If this timeout expires, the partially-reassembled
  3340.          datagram MUST be discarded and an ICMP Time Exceeded message
  3341.          sent to the source host (if fragment zero has been received).
  3342.  
  3343.          DISCUSSION:
  3344.               The IP specification says that the reassembly timeout
  3345.               should be the remaining TTL from the IP header, but this
  3346.               does not work well because gateways generally treat TTL as
  3347.               a simple hop count rather than an elapsed time.  If the
  3348.               reassembly timeout is too small, datagrams will be
  3349.               discarded unnecessarily, and communication may fail.  The
  3350.               timeout needs to be at least as large as the typical
  3351.               maximum delay across the Internet.  A realistic minimum
  3352.               reassembly timeout would be 60 seconds.
  3353.  
  3354.               It has been suggested that a cache might be kept of
  3355.               round-trip times measured by transport protocols for
  3356.               various destinations, and that these values might be used
  3357.               to dynamically determine a reasonable reassembly timeout
  3358.  
  3359.  
  3360.  
  3361. Internet Engineering Task Force                                [Page 57]
  3362.  
  3363.  
  3364.  
  3365.  
  3366. RFC1122                      INTERNET LAYER                 October 1989
  3367.  
  3368.  
  3369.               value.  Further investigation of this approach is
  3370.               required.
  3371.  
  3372.               If the reassembly timeout is set too high, buffer
  3373.               resources in the receiving host will be tied up too long,
  3374.               and the MSL (Maximum Segment Lifetime) [TCP:1] will be
  3375.               larger than necessary.  The MSL controls the maximum rate
  3376.               at which fragmented datagrams can be sent using distinct
  3377.               values of the 16-bit Ident field; a larger MSL lowers the
  3378.               maximum rate.  The TCP specification [TCP:1] arbitrarily
  3379.               assumes a value of 2 minutes for MSL.  This sets an upper
  3380.               limit on a reasonable reassembly timeout value.
  3381.  
  3382.       3.3.3  Fragmentation
  3383.  
  3384.          Optionally, the IP layer MAY implement a mechanism to fragment
  3385.          outgoing datagrams intentionally.
  3386.  
  3387.          We designate by EMTU_S ("Effective MTU for sending") the
  3388.          maximum IP datagram size that may be sent, for a particular
  3389.          combination of IP source and destination addresses and perhaps
  3390.          TOS.
  3391.  
  3392.          A host MUST implement a mechanism to allow the transport layer
  3393.          to learn MMS_S, the maximum transport-layer message size that
  3394.          may be sent for a given {source, destination, TOS} triplet (see
  3395.          GET_MAXSIZES call in Section 3.4).  If no local fragmentation
  3396.          is performed, the value of MMS_S will be:
  3397.  
  3398.             MMS_S = EMTU_S - <IP header size>
  3399.  
  3400.          and EMTU_S must be less than or equal to the MTU of the network
  3401.          interface corresponding to the source address of the datagram.
  3402.          Note that <IP header size> in this equation will be 20, unless
  3403.          the IP reserves space to insert IP options for its own purposes
  3404.          in addition to any options inserted by the transport layer.
  3405.  
  3406.          A host that does not implement local fragmentation MUST ensure
  3407.          that the transport layer (for TCP) or the application layer
  3408.          (for UDP) obtains MMS_S from the IP layer and does not send a
  3409.          datagram exceeding MMS_S in size.
  3410.  
  3411.          It is generally desirable to avoid local fragmentation and to
  3412.          choose EMTU_S low enough to avoid fragmentation in any gateway
  3413.          along the path.  In the absence of actual knowledge of the
  3414.          minimum MTU along the path, the IP layer SHOULD use
  3415.          EMTU_S <= 576 whenever the destination address is not on a
  3416.          connected network, and otherwise use the connected network's
  3417.  
  3418.  
  3419.  
  3420. Internet Engineering Task Force                                [Page 58]
  3421.  
  3422.  
  3423.  
  3424.  
  3425. RFC1122                      INTERNET LAYER                 October 1989
  3426.  
  3427.  
  3428.          MTU.
  3429.  
  3430.          The MTU of each physical interface MUST be configurable.
  3431.  
  3432.          A host IP layer implementation MAY have a configuration flag
  3433.          "All-Subnets-MTU", indicating that the MTU of the connected
  3434.          network is to be used for destinations on different subnets
  3435.          within the same network, but not for other networks.  Thus,
  3436.          this flag causes the network class mask, rather than the subnet
  3437.          address mask, to be used to choose an EMTU_S.  For a multihomed
  3438.          host, an "All-Subnets-MTU" flag is needed for each network
  3439.          interface.
  3440.  
  3441.          DISCUSSION:
  3442.               Picking the correct datagram size to use when sending data
  3443.               is a complex topic [IP:9].
  3444.  
  3445.               (a)  In general, no host is required to accept an IP
  3446.                    datagram larger than 576 bytes (including header and
  3447.                    data), so a host must not send a larger datagram
  3448.                    without explicit knowledge or prior arrangement with
  3449.                    the destination host.  Thus, MMS_S is only an upper
  3450.                    bound on the datagram size that a transport protocol
  3451.                    may send; even when MMS_S exceeds 556, the transport
  3452.                    layer must limit its messages to 556 bytes in the
  3453.                    absence of other knowledge about the destination
  3454.                    host.
  3455.  
  3456.               (b)  Some transport protocols (e.g., TCP) provide a way to
  3457.                    explicitly inform the sender about the largest
  3458.                    datagram the other end can receive and reassemble
  3459.                    [IP:7].  There is no corresponding mechanism in the
  3460.                    IP layer.
  3461.  
  3462.                    A transport protocol that assumes an EMTU_R larger
  3463.                    than 576 (see Section 3.3.2), can send a datagram of
  3464.                    this larger size to another host that implements the
  3465.                    same protocol.
  3466.  
  3467.               (c)  Hosts should ideally limit their EMTU_S for a given
  3468.                    destination to the minimum MTU of all the networks
  3469.                    along the path, to avoid any fragmentation.  IP
  3470.                    fragmentation, while formally correct, can create a
  3471.                    serious transport protocol performance problem,
  3472.                    because loss of a single fragment means all the
  3473.                    fragments in the segment must be retransmitted
  3474.                    [IP:9].
  3475.  
  3476.  
  3477.  
  3478.  
  3479. Internet Engineering Task Force                                [Page 59]
  3480.  
  3481.  
  3482.  
  3483.  
  3484. RFC1122                      INTERNET LAYER                 October 1989
  3485.  
  3486.  
  3487.               Since nearly all networks in the Internet currently
  3488.               support an MTU of 576 or greater, we strongly recommend
  3489.               the use of 576 for datagrams sent to non-local networks.
  3490.  
  3491.               It has been suggested that a host could determine the MTU
  3492.               over a given path by sending a zero-offset datagram
  3493.               fragment and waiting for the receiver to time out the
  3494.               reassembly (which cannot complete!) and return an ICMP
  3495.               Time Exceeded message.  This message would include the
  3496.               largest remaining fragment header in its body.  More
  3497.               direct mechanisms are being experimented with, but have
  3498.               not yet been adopted (see e.g., RFC-1063).
  3499.  
  3500.       3.3.4  Local Multihoming
  3501.  
  3502.          3.3.4.1  Introduction
  3503.  
  3504.             A multihomed host has multiple IP addresses, which we may
  3505.             think of as "logical interfaces".  These logical interfaces
  3506.             may be associated with one or more physical interfaces, and
  3507.             these physical interfaces may be connected to the same or
  3508.             different networks.
  3509.  
  3510.             Here are some important cases of multihoming:
  3511.  
  3512.             (a)  Multiple Logical Networks
  3513.  
  3514.                  The Internet architects envisioned that each physical
  3515.                  network would have a single unique IP network (or
  3516.                  subnet) number.  However, LAN administrators have
  3517.                  sometimes found it useful to violate this assumption,
  3518.                  operating a LAN with multiple logical networks per
  3519.                  physical connected network.
  3520.  
  3521.                  If a host connected to such a physical network is
  3522.                  configured to handle traffic for each of N different
  3523.                  logical networks, then the host will have N logical
  3524.                  interfaces.  These could share a single physical
  3525.                  interface, or might use N physical interfaces to the
  3526.                  same network.
  3527.  
  3528.             (b)  Multiple Logical Hosts
  3529.  
  3530.                  When a host has multiple IP addresses that all have the
  3531.                  same <Network-number> part (and the same <Subnet-
  3532.                  number> part, if any), the logical interfaces are known
  3533.                  as "logical hosts".  These logical interfaces might
  3534.                  share a single physical interface or might use separate
  3535.  
  3536.  
  3537.  
  3538. Internet Engineering Task Force                                [Page 60]
  3539.  
  3540.  
  3541.  
  3542.  
  3543. RFC1122                      INTERNET LAYER                 October 1989
  3544.  
  3545.  
  3546.                  physical interfaces to the same physical network.
  3547.  
  3548.             (c)  Simple Multihoming
  3549.  
  3550.                  In this case, each logical interface is mapped into a
  3551.                  separate physical interface and each physical interface
  3552.                  is connected to a different physical network.  The term
  3553.                  "multihoming" was originally applied only to this case,
  3554.                  but it is now applied more generally.
  3555.  
  3556.                  A host with embedded gateway functionality will
  3557.                  typically fall into the simple multihoming case.  Note,
  3558.                  however, that a host may be simply multihomed without
  3559.                  containing an embedded gateway, i.e., without
  3560.                  forwarding datagrams from one connected network to
  3561.                  another.
  3562.  
  3563.                  This case presents the most difficult routing problems.
  3564.                  The choice of interface (i.e., the choice of first-hop
  3565.                  network) may significantly affect performance or even
  3566.                  reachability of remote parts of the Internet.
  3567.  
  3568.  
  3569.             Finally, we note another possibility that is NOT
  3570.             multihoming:  one logical interface may be bound to multiple
  3571.             physical interfaces, in order to increase the reliability or
  3572.             throughput between directly connected machines by providing
  3573.             alternative physical paths between them.  For instance, two
  3574.             systems might be connected by multiple point-to-point links.
  3575.             We call this "link-layer multiplexing".  With link-layer
  3576.             multiplexing, the protocols above the link layer are unaware
  3577.             that multiple physical interfaces are present; the link-
  3578.             layer device driver is responsible for multiplexing and
  3579.             routing packets across the physical interfaces.
  3580.  
  3581.             In the Internet protocol architecture, a transport protocol
  3582.             instance ("entity") has no address of its own, but instead
  3583.             uses a single Internet Protocol (IP) address.  This has
  3584.             implications for the IP, transport, and application layers,
  3585.             and for the interfaces between them.  In particular, the
  3586.             application software may have to be aware of the multiple IP
  3587.             addresses of a multihomed host; in other cases, the choice
  3588.             can be made within the network software.
  3589.  
  3590.          3.3.4.2  Multihoming Requirements
  3591.  
  3592.             The following general rules apply to the selection of an IP
  3593.             source address for sending a datagram from a multihomed
  3594.  
  3595.  
  3596.  
  3597. Internet Engineering Task Force                                [Page 61]
  3598.  
  3599.  
  3600.  
  3601.  
  3602. RFC1122                      INTERNET LAYER                 October 1989
  3603.  
  3604.  
  3605.             host.
  3606.  
  3607.             (1)  If the datagram is sent in response to a received
  3608.                  datagram, the source address for the response SHOULD be
  3609.                  the specific-destination address of the request.  See
  3610.                  Sections 4.1.3.5 and 4.2.3.7 and the "General Issues"
  3611.                  section of [INTRO:1] for more specific requirements on
  3612.                  higher layers.
  3613.  
  3614.                  Otherwise, a source address must be selected.
  3615.  
  3616.             (2)  An application MUST be able to explicitly specify the
  3617.                  source address for initiating a connection or a
  3618.                  request.
  3619.  
  3620.             (3)  In the absence of such a specification, the networking
  3621.                  software MUST choose a source address.  Rules for this
  3622.                  choice are described below.
  3623.  
  3624.  
  3625.             There are two key requirement issues related to multihoming:
  3626.  
  3627.             (A)  A host MAY silently discard an incoming datagram whose
  3628.                  destination address does not correspond to the physical
  3629.                  interface through which it is received.
  3630.  
  3631.             (B)  A host MAY restrict itself to sending (non-source-
  3632.                  routed) IP datagrams only through the physical
  3633.                  interface that corresponds to the IP source address of
  3634.                  the datagrams.
  3635.  
  3636.  
  3637.             DISCUSSION:
  3638.                  Internet host implementors have used two different
  3639.                  conceptual models for multihoming, briefly summarized
  3640.                  in the following discussion.  This document takes no
  3641.                  stand on which model is preferred; each seems to have a
  3642.                  place.  This ambivalence is reflected in the issues (A)
  3643.                  and (B) being optional.
  3644.  
  3645.                  o    Strong ES Model
  3646.  
  3647.                       The Strong ES (End System, i.e., host) model
  3648.                       emphasizes the host/gateway (ES/IS) distinction,
  3649.                       and would therefore substitute MUST for MAY in
  3650.                       issues (A) and (B) above.  It tends to model a
  3651.                       multihomed host as a set of logical hosts within
  3652.                       the same physical host.
  3653.  
  3654.  
  3655.  
  3656. Internet Engineering Task Force                                [Page 62]
  3657.  
  3658.  
  3659.  
  3660.  
  3661. RFC1122                      INTERNET LAYER                 October 1989
  3662.  
  3663.  
  3664.                       With respect to (A), proponents of the Strong ES
  3665.                       model note that automatic Internet routing
  3666.                       mechanisms could not route a datagram to a
  3667.                       physical interface that did not correspond to the
  3668.                       destination address.
  3669.  
  3670.                       Under the Strong ES model, the route computation
  3671.                       for an outgoing datagram is the mapping:
  3672.  
  3673.                          route(src IP addr, dest IP addr, TOS)
  3674.                                                         -> gateway
  3675.  
  3676.                       Here the source address is included as a parameter
  3677.                       in order to select a gateway that is directly
  3678.                       reachable on the corresponding physical interface.
  3679.                       Note that this model logically requires that in
  3680.                       general there be at least one default gateway, and
  3681.                       preferably multiple defaults, for each IP source
  3682.                       address.
  3683.  
  3684.                  o    Weak ES Model
  3685.  
  3686.                       This view de-emphasizes the ES/IS distinction, and
  3687.                       would therefore substitute MUST NOT for MAY in
  3688.                       issues (A) and (B).  This model may be the more
  3689.                       natural one for hosts that wiretap gateway routing
  3690.                       protocols, and is necessary for hosts that have
  3691.                       embedded gateway functionality.
  3692.  
  3693.                       The Weak ES Model may cause the Redirect mechanism
  3694.                       to fail.  If a datagram is sent out a physical
  3695.                       interface that does not correspond to the
  3696.                       destination address, the first-hop gateway will
  3697.                       not realize when it needs to send a Redirect.  On
  3698.                       the other hand, if the host has embedded gateway
  3699.                       functionality, then it has routing information
  3700.                       without listening to Redirects.
  3701.  
  3702.                       In the Weak ES model, the route computation for an
  3703.                       outgoing datagram is the mapping:
  3704.  
  3705.                          route(dest IP addr, TOS) -> gateway, interface
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715. Internet Engineering Task Force                                [Page 63]
  3716.  
  3717.  
  3718.  
  3719.  
  3720. RFC1122                      INTERNET LAYER                 October 1989
  3721.  
  3722.  
  3723.          3.3.4.3  Choosing a Source Address
  3724.  
  3725.             DISCUSSION:
  3726.                  When it sends an initial connection request (e.g., a
  3727.                  TCP "SYN" segment) or a datagram service request (e.g.,
  3728.                  a UDP-based query), the transport layer on a multihomed
  3729.                  host needs to know which source address to use.  If the
  3730.                  application does not specify it, the transport layer
  3731.                  must ask the IP layer to perform the conceptual
  3732.                  mapping:
  3733.  
  3734.                      GET_SRCADDR(remote IP addr, TOS)
  3735.                                                -> local IP address
  3736.  
  3737.                  Here TOS is the Type-of-Service value (see Section
  3738.                  3.2.1.6), and the result is the desired source address.
  3739.                  The following rules are suggested for implementing this
  3740.                  mapping:
  3741.  
  3742.                  (a)  If the remote Internet address lies on one of the
  3743.                       (sub-) nets to which the host is directly
  3744.                       connected, a corresponding source address may be
  3745.                       chosen, unless the corresponding interface is
  3746.                       known to be down.
  3747.  
  3748.                  (b)  The route cache may be consulted, to see if there
  3749.                       is an active route to the specified destination
  3750.                       network through any network interface; if so, a
  3751.                       local IP address corresponding to that interface
  3752.                       may be chosen.
  3753.  
  3754.                  (c)  The table of static routes, if any (see Section
  3755.                       3.3.1.2) may be similarly consulted.
  3756.  
  3757.                  (d)  The default gateways may be consulted.  If these
  3758.                       gateways are assigned to different interfaces, the
  3759.                       interface corresponding to the gateway with the
  3760.                       highest preference may be chosen.
  3761.  
  3762.                  In the future, there may be a defined way for a
  3763.                  multihomed host to ask the gateways on all connected
  3764.                  networks for advice about the best network to use for a
  3765.                  given destination.
  3766.  
  3767.             IMPLEMENTATION:
  3768.                  It will be noted that this process is essentially the
  3769.                  same as datagram routing (see Section 3.3.1), and
  3770.                  therefore hosts may be able to combine the
  3771.  
  3772.  
  3773.  
  3774. Internet Engineering Task Force                                [Page 64]
  3775.  
  3776.  
  3777.  
  3778.  
  3779. RFC1122                      INTERNET LAYER                 October 1989
  3780.  
  3781.  
  3782.                  implementation of the two functions.
  3783.  
  3784.       3.3.5  Source Route Forwarding
  3785.  
  3786.          Subject to restrictions given below, a host MAY be able to act
  3787.          as an intermediate hop in a source route, forwarding a source-
  3788.          routed datagram to the next specified hop.
  3789.  
  3790.          However, in performing this gateway-like function, the host
  3791.          MUST obey all the relevant rules for a gateway forwarding
  3792.          source-routed datagrams [INTRO:2].  This includes the following
  3793.          specific provisions, which override the corresponding host
  3794.          provisions given earlier in this document:
  3795.  
  3796.          (A)  TTL (ref. Section 3.2.1.7)
  3797.  
  3798.               The TTL field MUST be decremented and the datagram perhaps
  3799.               discarded as specified for a gateway in [INTRO:2].
  3800.  
  3801.          (B)  ICMP Destination Unreachable (ref. Section 3.2.2.1)
  3802.  
  3803.               A host MUST be able to generate Destination Unreachable
  3804.               messages with the following codes:
  3805.  
  3806.               4    (Fragmentation Required but DF Set) when a source-
  3807.                    routed datagram cannot be fragmented to fit into the
  3808.                    target network;
  3809.  
  3810.               5    (Source Route Failed) when a source-routed datagram
  3811.                    cannot be forwarded, e.g., because of a routing
  3812.                    problem or because the next hop of a strict source
  3813.                    route is not on a connected network.
  3814.  
  3815.          (C)  IP Source Address (ref. Section 3.2.1.3)
  3816.  
  3817.               A source-routed datagram being forwarded MAY (and normally
  3818.               will) have a source address that is not one of the IP
  3819.               addresses of the forwarding host.
  3820.  
  3821.          (D)  Record Route Option (ref. Section 3.2.1.8d)
  3822.  
  3823.               A host that is forwarding a source-routed datagram
  3824.               containing a Record Route option MUST update that option,
  3825.               if it has room.
  3826.  
  3827.          (E)  Timestamp Option (ref. Section 3.2.1.8e)
  3828.  
  3829.               A host that is forwarding a source-routed datagram
  3830.  
  3831.  
  3832.  
  3833. Internet Engineering Task Force                                [Page 65]
  3834.  
  3835.  
  3836.  
  3837.  
  3838. RFC1122                      INTERNET LAYER                 October 1989
  3839.  
  3840.  
  3841.               containing a Timestamp Option MUST add the current
  3842.               timestamp to that option, according to the rules for this
  3843.               option.
  3844.  
  3845.          To define the rules restricting host forwarding of source-
  3846.          routed datagrams, we use the term "local source-routing" if the
  3847.          next hop will be through the same physical interface through
  3848.          which the datagram arrived; otherwise, it is "non-local
  3849.          source-routing".
  3850.  
  3851.          o    A host is permitted to perform local source-routing
  3852.               without restriction.
  3853.  
  3854.          o    A host that supports non-local source-routing MUST have a
  3855.               configurable switch to disable forwarding, and this switch
  3856.               MUST default to disabled.
  3857.  
  3858.          o    The host MUST satisfy all gateway requirements for
  3859.               configurable policy filters [INTRO:2] restricting non-
  3860.               local forwarding.
  3861.  
  3862.          If a host receives a datagram with an incomplete source route
  3863.          but does not forward it for some reason, the host SHOULD return
  3864.          an ICMP Destination Unreachable (code 5, Source Route Failed)
  3865.          message, unless the datagram was itself an ICMP error message.
  3866.  
  3867.       3.3.6  Broadcasts
  3868.  
  3869.          Section 3.2.1.3 defined the four standard IP broadcast address
  3870.          forms:
  3871.  
  3872.            Limited Broadcast:  {-1, -1}
  3873.  
  3874.            Directed Broadcast:  {<Network-number>,-1}
  3875.  
  3876.            Subnet Directed Broadcast:
  3877.                               {<Network-number>,<Subnet-number>,-1}
  3878.  
  3879.            All-Subnets Directed Broadcast: {<Network-number>,-1,-1}
  3880.  
  3881.          A host MUST recognize any of these forms in the destination
  3882.          address of an incoming datagram.
  3883.  
  3884.          There is a class of hosts* that use non-standard broadcast
  3885.          address forms, substituting 0 for -1.  All hosts SHOULD
  3886. _________________________
  3887. *4.2BSD Unix and its derivatives, but not 4.3BSD.
  3888.  
  3889.  
  3890.  
  3891.  
  3892. Internet Engineering Task Force                                [Page 66]
  3893.  
  3894.  
  3895.  
  3896.  
  3897. RFC1122                      INTERNET LAYER                 October 1989
  3898.  
  3899.  
  3900.          recognize and accept any of these non-standard broadcast
  3901.          addresses as the destination address of an incoming datagram.
  3902.          A host MAY optionally have a configuration option to choose the
  3903.          0 or the -1 form of broadcast address, for each physical
  3904.          interface, but this option SHOULD default to the standard (-1)
  3905.          form.
  3906.  
  3907.          When a host sends a datagram to a link-layer broadcast address,
  3908.          the IP destination address MUST be a legal IP broadcast or IP
  3909.          multicast address.
  3910.  
  3911.          A host SHOULD silently discard a datagram that is received via
  3912.          a link-layer broadcast (see Section 2.4) but does not specify
  3913.          an IP multicast or broadcast destination address.
  3914.  
  3915.          Hosts SHOULD use the Limited Broadcast address to broadcast to
  3916.          a connected network.
  3917.  
  3918.  
  3919.          DISCUSSION:
  3920.               Using the Limited Broadcast address instead of a Directed
  3921.               Broadcast address may improve system robustness.  Problems
  3922.               are often caused by machines that do not understand the
  3923.               plethora of broadcast addresses (see Section 3.2.1.3), or
  3924.               that may have different ideas about which broadcast
  3925.               addresses are in use.  The prime example of the latter is
  3926.               machines that do not understand subnetting but are
  3927.               attached to a subnetted net.  Sending a Subnet Broadcast
  3928.               for the connected network will confuse those machines,
  3929.               which will see it as a message to some other host.
  3930.  
  3931.               There has been discussion on whether a datagram addressed
  3932.               to the Limited Broadcast address ought to be sent from all
  3933.               the interfaces of a multihomed host.  This specification
  3934.               takes no stand on the issue.
  3935.  
  3936.       3.3.7  IP Multicasting
  3937.  
  3938.          A host SHOULD support local IP multicasting on all connected
  3939.          networks for which a mapping from Class D IP addresses to
  3940.          link-layer addresses has been specified (see below).  Support
  3941.          for local IP multicasting includes sending multicast datagrams,
  3942.          joining multicast groups and receiving multicast datagrams, and
  3943.          leaving multicast groups.  This implies support for all of
  3944.          [IP:4] except the IGMP protocol itself, which is OPTIONAL.
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951. Internet Engineering Task Force                                [Page 67]
  3952.  
  3953.  
  3954.  
  3955.  
  3956. RFC1122                      INTERNET LAYER                 October 1989
  3957.  
  3958.  
  3959.          DISCUSSION:
  3960.               IGMP provides gateways that are capable of multicast
  3961.               routing with the information required to support IP
  3962.               multicasting across multiple networks.  At this time,
  3963.               multicast-routing gateways are in the experimental stage
  3964.               and are not widely available.  For hosts that are not
  3965.               connected to networks with multicast-routing gateways or
  3966.               that do not need to receive multicast datagrams
  3967.               originating on other networks, IGMP serves no purpose and
  3968.               is therefore optional for now.  However, the rest of
  3969.               [IP:4] is currently recommended for the purpose of
  3970.               providing IP-layer access to local network multicast
  3971.               addressing, as a preferable alternative to local broadcast
  3972.               addressing.  It is expected that IGMP will become
  3973.               recommended at some future date, when multicast-routing
  3974.               gateways have become more widely available.
  3975.  
  3976.          If IGMP is not implemented, a host SHOULD still join the "all-
  3977.          hosts" group (224.0.0.1) when the IP layer is initialized and
  3978.          remain a member for as long as the IP layer is active.
  3979.  
  3980.          DISCUSSION:
  3981.               Joining the "all-hosts" group will support strictly local
  3982.               uses of multicasting, e.g., a gateway discovery protocol,
  3983.               even if IGMP is not implemented.
  3984.  
  3985.          The mapping of IP Class D addresses to local addresses is
  3986.          currently specified for the following types of networks:
  3987.  
  3988.          o    Ethernet/IEEE 802.3, as defined in [IP:4].
  3989.  
  3990.          o    Any network that supports broadcast but not multicast,
  3991.               addressing: all IP Class D addresses map to the local
  3992.               broadcast address.
  3993.  
  3994.          o    Any type of point-to-point link (e.g., SLIP or HDLC
  3995.               links): no mapping required.  All IP multicast datagrams
  3996.               are sent as-is, inside the local framing.
  3997.  
  3998.          Mappings for other types of networks will be specified in the
  3999.          future.
  4000.  
  4001.          A host SHOULD provide a way for higher-layer protocols or
  4002.          applications to determine which of the host's connected
  4003.          network(s) support IP multicast addressing.
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010. Internet Engineering Task Force                                [Page 68]
  4011.  
  4012.  
  4013.  
  4014.  
  4015. RFC1122                      INTERNET LAYER                 October 1989
  4016.  
  4017.  
  4018.       3.3.8  Error Reporting
  4019.  
  4020.          Wherever practical, hosts MUST return ICMP error datagrams on
  4021.          detection of an error, except in those cases where returning an
  4022.          ICMP error message is specifically prohibited.
  4023.  
  4024.          DISCUSSION:
  4025.               A common phenomenon in datagram networks is the "black
  4026.               hole disease": datagrams are sent out, but nothing comes
  4027.               back.  Without any error datagrams, it is difficult for
  4028.               the user to figure out what the problem is.
  4029.  
  4030.    3.4  INTERNET/TRANSPORT LAYER INTERFACE
  4031.  
  4032.       The interface between the IP layer and the transport layer MUST
  4033.       provide full access to all the mechanisms of the IP layer,
  4034.       including options, Type-of-Service, and Time-to-Live.  The
  4035.       transport layer MUST either have mechanisms to set these interface
  4036.       parameters, or provide a path to pass them through from an
  4037.       application, or both.
  4038.  
  4039.       DISCUSSION:
  4040.            Applications are urged to make use of these mechanisms where
  4041.            applicable, even when the mechanisms are not currently
  4042.            effective in the Internet (e.g., TOS).  This will allow these
  4043.            mechanisms to be immediately useful when they do become
  4044.            effective, without a large amount of retrofitting of host
  4045.            software.
  4046.  
  4047.       We now describe a conceptual interface between the transport layer
  4048.       and the IP layer, as a set of procedure calls.  This is an
  4049.       extension of the information in Section 3.3 of RFC-791 [IP:1].
  4050.  
  4051.  
  4052.       *    Send Datagram
  4053.  
  4054.                 SEND(src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt
  4055.                      => result )
  4056.  
  4057.            where the parameters are defined in RFC-791.  Passing an Id
  4058.            parameter is optional; see Section 3.2.1.5.
  4059.  
  4060.  
  4061.       *    Receive Datagram
  4062.  
  4063.                 RECV(BufPTR, prot
  4064.                      => result, src, dst, SpecDest, TOS, len, opt)
  4065.  
  4066.  
  4067.  
  4068.  
  4069. Internet Engineering Task Force                                [Page 69]
  4070.  
  4071.  
  4072.  
  4073.  
  4074. RFC1122                      INTERNET LAYER                 October 1989
  4075.  
  4076.  
  4077.            All the parameters are defined in RFC-791, except for:
  4078.  
  4079.                 SpecDest = specific-destination address of datagram
  4080.                             (defined in Section 3.2.1.3)
  4081.  
  4082.            The result parameter dst contains the datagram's destination
  4083.            address.  Since this may be a broadcast or multicast address,
  4084.            the SpecDest parameter (not shown in RFC-791) MUST be passed.
  4085.            The parameter opt contains all the IP options received in the
  4086.            datagram; these MUST also be passed to the transport layer.
  4087.  
  4088.  
  4089.       *    Select Source Address
  4090.  
  4091.                 GET_SRCADDR(remote, TOS)  -> local
  4092.  
  4093.                 remote = remote IP address
  4094.                 TOS = Type-of-Service
  4095.                 local = local IP address
  4096.  
  4097.            See Section 3.3.4.3.
  4098.  
  4099.  
  4100.       *    Find Maximum Datagram Sizes
  4101.  
  4102.                 GET_MAXSIZES(local, remote, TOS) -> MMS_R, MMS_S
  4103.  
  4104.                 MMS_R = maximum receive transport-message size.
  4105.                 MMS_S = maximum send transport-message size.
  4106.                (local, remote, TOS defined above)
  4107.  
  4108.            See Sections 3.3.2 and 3.3.3.
  4109.  
  4110.  
  4111.       *    Advice on Delivery Success
  4112.  
  4113.                 ADVISE_DELIVPROB(sense, local, remote, TOS)
  4114.  
  4115.            Here the parameter sense is a 1-bit flag indicating whether
  4116.            positive or negative advice is being given; see the
  4117.            discussion in Section 3.3.1.4. The other parameters were
  4118.            defined earlier.
  4119.  
  4120.  
  4121.       *    Send ICMP Message
  4122.  
  4123.                 SEND_ICMP(src, dst, TOS, TTL, BufPTR, len, Id, DF, opt)
  4124.                      -> result
  4125.  
  4126.  
  4127.  
  4128. Internet Engineering Task Force                                [Page 70]
  4129.  
  4130.  
  4131.  
  4132.  
  4133. RFC1122                      INTERNET LAYER                 October 1989
  4134.  
  4135.  
  4136.                 (Parameters defined in RFC-791).
  4137.  
  4138.            Passing an Id parameter is optional; see Section 3.2.1.5.
  4139.            The transport layer MUST be able to send certain ICMP
  4140.            messages:  Port Unreachable or any of the query-type
  4141.            messages.  This function could be considered to be a special
  4142.            case of the SEND() call, of course; we describe it separately
  4143.            for clarity.
  4144.  
  4145.  
  4146.       *    Receive ICMP Message
  4147.  
  4148.                 RECV_ICMP(BufPTR ) -> result, src, dst, len, opt
  4149.  
  4150.                 (Parameters defined in RFC-791).
  4151.  
  4152.            The IP layer MUST pass certain ICMP messages up to the
  4153.            appropriate transport-layer routine.  This function could be
  4154.            considered to be a special case of the RECV() call, of
  4155.            course; we describe it separately for clarity.
  4156.  
  4157.            For an ICMP error message, the data that is passed up MUST
  4158.            include the original Internet header plus all the octets of
  4159.            the original message that are included in the ICMP message.
  4160.            This data will be used by the transport layer to locate the
  4161.            connection state information, if any.
  4162.  
  4163.            In particular, the following ICMP messages are to be passed
  4164.            up:
  4165.  
  4166.            o    Destination Unreachable
  4167.  
  4168.            o    Source Quench
  4169.  
  4170.            o    Echo Reply (to ICMP user interface, unless the Echo
  4171.                 Request originated in the IP layer)
  4172.  
  4173.            o    Timestamp Reply (to ICMP user interface)
  4174.  
  4175.            o    Time Exceeded
  4176.  
  4177.  
  4178.       DISCUSSION:
  4179.            In the future, there may be additions to this interface to
  4180.            pass path data (see Section 3.3.1.3) between the IP and
  4181.            transport layers.
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187. Internet Engineering Task Force                                [Page 71]
  4188.  
  4189.  
  4190.  
  4191.  
  4192. RFC1122                      INTERNET LAYER                 October 1989
  4193.  
  4194.  
  4195.    3.5  INTERNET LAYER REQUIREMENTS SUMMARY
  4196.  
  4197.  
  4198.                                                  |        | | | |S| |
  4199.                                                  |        | | | |H| |F
  4200.                                                  |        | | | |O|M|o
  4201.                                                  |        | |S| |U|U|o
  4202.                                                  |        | |H| |L|S|t
  4203.                                                  |        |M|O| |D|T|n
  4204.                                                  |        |U|U|M| | |o
  4205.                                                  |        |S|L|A|N|N|t
  4206.                                                  |        |T|D|Y|O|O|t
  4207. FEATURE                                          |SECTION | | | |T|T|e
  4208. -------------------------------------------------|--------|-|-|-|-|-|--
  4209.                                                  |        | | | | | |
  4210. Implement IP and ICMP                            |3.1     |x| | | | |
  4211. Handle remote multihoming in application layer   |3.1     |x| | | | |
  4212. Support local multihoming                        |3.1     | | |x| | |
  4213. Meet gateway specs if forward datagrams          |3.1     |x| | | | |
  4214. Configuration switch for embedded gateway        |3.1     |x| | | | |1
  4215.    Config switch default to non-gateway          |3.1     |x| | | | |1
  4216.    Auto-config based on number of interfaces     |3.1     | | | | |x|1
  4217. Able to log discarded datagrams                  |3.1     | |x| | | |
  4218.    Record in counter                             |3.1     | |x| | | |
  4219.                                                  |        | | | | | |
  4220. Silently discard Version != 4                    |3.2.1.1 |x| | | | |
  4221. Verify IP checksum, silently discard bad dgram   |3.2.1.2 |x| | | | |
  4222. Addressing:                                      |        | | | | | |
  4223.   Subnet addressing (RFC-950)                    |3.2.1.3 |x| | | | |
  4224.   Src address must be host's own IP address      |3.2.1.3 |x| | | | |
  4225.   Silently discard datagram with bad dest addr   |3.2.1.3 |x| | | | |
  4226.   Silently discard datagram with bad src addr    |3.2.1.3 |x| | | | |
  4227. Support reassembly                               |3.2.1.4 |x| | | | |
  4228. Retain same Id field in identical datagram       |3.2.1.5 | | |x| | |
  4229.                                                  |        | | | | | |
  4230. TOS:                                             |        | | | | | |
  4231.   Allow transport layer to set TOS               |3.2.1.6 |x| | | | |
  4232.   Pass received TOS up to transport layer        |3.2.1.6 | |x| | | |
  4233.   Use RFC-795 link-layer mappings for TOS        |3.2.1.6 | | | |x| |
  4234. TTL:                                             |        | | | | | |
  4235.   Send packet with TTL of 0                      |3.2.1.7 | | | | |x|
  4236.   Discard received packets with TTL < 2          |3.2.1.7 | | | | |x|
  4237.   Allow transport layer to set TTL               |3.2.1.7 |x| | | | |
  4238.   Fixed TTL is configurable                      |3.2.1.7 |x| | | | |
  4239.                                                  |        | | | | | |
  4240. IP Options:                                      |        | | | | | |
  4241.   Allow transport layer to send IP options       |3.2.1.8 |x| | | | |
  4242.   Pass all IP options rcvd to higher layer       |3.2.1.8 |x| | | | |
  4243.  
  4244.  
  4245.  
  4246. Internet Engineering Task Force                                [Page 72]
  4247.  
  4248.  
  4249.  
  4250.  
  4251. RFC1122                      INTERNET LAYER                 October 1989
  4252.  
  4253.  
  4254.   IP layer silently ignore unknown options       |3.2.1.8 |x| | | | |
  4255.   Security option                                |3.2.1.8a| | |x| | |
  4256.   Send Stream Identifier option                  |3.2.1.8b| | | |x| |
  4257.   Silently ignore Stream Identifer option        |3.2.1.8b|x| | | | |
  4258.   Record Route option                            |3.2.1.8d| | |x| | |
  4259.   Timestamp option                               |3.2.1.8e| | |x| | |
  4260. Source Route Option:                             |        | | | | | |
  4261.   Originate & terminate Source Route options     |3.2.1.8c|x| | | | |
  4262.   Datagram with completed SR passed up to TL     |3.2.1.8c|x| | | | |
  4263.   Build correct (non-redundant) return route     |3.2.1.8c|x| | | | |
  4264.   Send multiple SR options in one header         |3.2.1.8c| | | | |x|
  4265.                                                  |        | | | | | |
  4266. ICMP:                                            |        | | | | | |
  4267.   Silently discard ICMP msg with unknown type    |3.2.2   |x| | | | |
  4268.   Include more than 8 octets of orig datagram    |3.2.2   | | |x| | |
  4269.       Included octets same as received           |3.2.2   |x| | | | |
  4270.   Demux ICMP Error to transport protocol         |3.2.2   |x| | | | |
  4271.   Send ICMP error message with TOS=0             |3.2.2   | |x| | | |
  4272.   Send ICMP error message for:                   |        | | | | | |
  4273.    - ICMP error msg                              |3.2.2   | | | | |x|
  4274.    - IP b'cast or IP m'cast                      |3.2.2   | | | | |x|
  4275.    - Link-layer b'cast                           |3.2.2   | | | | |x|
  4276.    - Non-initial fragment                        |3.2.2   | | | | |x|
  4277.    - Datagram with non-unique src address        |3.2.2   | | | | |x|
  4278.   Return ICMP error msgs (when not prohibited)   |3.3.8   |x| | | | |
  4279.                                                  |        | | | | | |
  4280.   Dest Unreachable:                              |        | | | | | |
  4281.     Generate Dest Unreachable (code 2/3)         |3.2.2.1 | |x| | | |
  4282.     Pass ICMP Dest Unreachable to higher layer   |3.2.2.1 |x| | | | |
  4283.     Higher layer act on Dest Unreach             |3.2.2.1 | |x| | | |
  4284.       Interpret Dest Unreach as only hint        |3.2.2.1 |x| | | | |
  4285.   Redirect:                                      |        | | | | | |
  4286.     Host send Redirect                           |3.2.2.2 | | | |x| |
  4287.     Update route cache when recv Redirect        |3.2.2.2 |x| | | | |
  4288.     Handle both Host and Net Redirects           |3.2.2.2 |x| | | | |
  4289.     Discard illegal Redirect                     |3.2.2.2 | |x| | | |
  4290.   Source Quench:                                 |        | | | | | |
  4291.     Send Source Quench if buffering exceeded     |3.2.2.3 | | |x| | |
  4292.     Pass Source Quench to higher layer           |3.2.2.3 |x| | | | |
  4293.     Higher layer act on Source Quench            |3.2.2.3 | |x| | | |
  4294.   Time Exceeded: pass to higher layer            |3.2.2.4 |x| | | | |
  4295.   Parameter Problem:                             |        | | | | | |
  4296.     Send Parameter Problem messages              |3.2.2.5 | |x| | | |
  4297.     Pass Parameter Problem to higher layer       |3.2.2.5 |x| | | | |
  4298.     Report Parameter Problem to user             |3.2.2.5 | | |x| | |
  4299.                                                  |        | | | | | |
  4300.   ICMP Echo Request or Reply:                    |        | | | | | |
  4301.     Echo server and Echo client                  |3.2.2.6 |x| | | | |
  4302.  
  4303.  
  4304.  
  4305. Internet Engineering Task Force                                [Page 73]
  4306.  
  4307.  
  4308.  
  4309.  
  4310. RFC1122                      INTERNET LAYER                 October 1989
  4311.  
  4312.  
  4313.     Echo client                                  |3.2.2.6 | |x| | | |
  4314.     Discard Echo Request to broadcast address    |3.2.2.6 | | |x| | |
  4315.     Discard Echo Request to multicast address    |3.2.2.6 | | |x| | |
  4316.     Use specific-dest addr as Echo Reply src     |3.2.2.6 |x| | | | |
  4317.     Send same data in Echo Reply                 |3.2.2.6 |x| | | | |
  4318.     Pass Echo Reply to higher layer              |3.2.2.6 |x| | | | |
  4319.     Reflect Record Route, Time Stamp options     |3.2.2.6 | |x| | | |
  4320.     Reverse and reflect Source Route option      |3.2.2.6 |x| | | | |
  4321.                                                  |        | | | | | |
  4322.   ICMP Information Request or Reply:             |3.2.2.7 | | | |x| |
  4323.   ICMP Timestamp and Timestamp Reply:            |3.2.2.8 | | |x| | |
  4324.     Minimize delay variability                   |3.2.2.8 | |x| | | |1
  4325.     Silently discard b'cast Timestamp            |3.2.2.8 | | |x| | |1
  4326.     Silently discard m'cast Timestamp            |3.2.2.8 | | |x| | |1
  4327.     Use specific-dest addr as TS Reply src       |3.2.2.8 |x| | | | |1
  4328.     Reflect Record Route, Time Stamp options     |3.2.2.6 | |x| | | |1
  4329.     Reverse and reflect Source Route option      |3.2.2.8 |x| | | | |1
  4330.     Pass Timestamp Reply to higher layer         |3.2.2.8 |x| | | | |1
  4331.     Obey rules for "standard value"              |3.2.2.8 |x| | | | |1
  4332.                                                  |        | | | | | |
  4333.   ICMP Address Mask Request and Reply:           |        | | | | | |
  4334.     Addr Mask source configurable                |3.2.2.9 |x| | | | |
  4335.     Support static configuration of addr mask    |3.2.2.9 |x| | | | |
  4336.     Get addr mask dynamically during booting     |3.2.2.9 | | |x| | |
  4337.     Get addr via ICMP Addr Mask Request/Reply    |3.2.2.9 | | |x| | |
  4338.       Retransmit Addr Mask Req if no Reply       |3.2.2.9 |x| | | | |3
  4339.       Assume default mask if no Reply            |3.2.2.9 | |x| | | |3
  4340.       Update address mask from first Reply only  |3.2.2.9 |x| | | | |3
  4341.     Reasonableness check on Addr Mask            |3.2.2.9 | |x| | | |
  4342.     Send unauthorized Addr Mask Reply msgs       |3.2.2.9 | | | | |x|
  4343.       Explicitly configured to be agent          |3.2.2.9 |x| | | | |
  4344.     Static config=> Addr-Mask-Authoritative flag |3.2.2.9 | |x| | | |
  4345.       Broadcast Addr Mask Reply when init.       |3.2.2.9 |x| | | | |3
  4346.                                                  |        | | | | | |
  4347. ROUTING OUTBOUND DATAGRAMS:                      |        | | | | | |
  4348.   Use address mask in local/remote decision      |3.3.1.1 |x| | | | |
  4349.   Operate with no gateways on conn network       |3.3.1.1 |x| | | | |
  4350.   Maintain "route cache" of next-hop gateways    |3.3.1.2 |x| | | | |
  4351.   Treat Host and Net Redirect the same           |3.3.1.2 | |x| | | |
  4352.   If no cache entry, use default gateway         |3.3.1.2 |x| | | | |
  4353.     Support multiple default gateways            |3.3.1.2 |x| | | | |
  4354.   Provide table of static routes                 |3.3.1.2 | | |x| | |
  4355.     Flag: route overridable by Redirects         |3.3.1.2 | | |x| | |
  4356.   Key route cache on host, not net address       |3.3.1.3 | | |x| | |
  4357.   Include TOS in route cache                     |3.3.1.3 | |x| | | |
  4358.                                                  |        | | | | | |
  4359.   Able to detect failure of next-hop gateway     |3.3.1.4 |x| | | | |
  4360.   Assume route is good forever                   |3.3.1.4 | | | |x| |
  4361.  
  4362.  
  4363.  
  4364. Internet Engineering Task Force                                [Page 74]
  4365.  
  4366.  
  4367.  
  4368.  
  4369. RFC1122                      INTERNET LAYER                 October 1989
  4370.  
  4371.  
  4372.   Ping gateways continuously                     |3.3.1.4 | | | | |x|
  4373.   Ping only when traffic being sent              |3.3.1.4 |x| | | | |
  4374.   Ping only when no positive indication          |3.3.1.4 |x| | | | |
  4375.   Higher and lower layers give advice            |3.3.1.4 | |x| | | |
  4376.   Switch from failed default g'way to another    |3.3.1.5 |x| | | | |
  4377.   Manual method of entering config info          |3.3.1.6 |x| | | | |
  4378.                                                  |        | | | | | |
  4379. REASSEMBLY and FRAGMENTATION:                    |        | | | | | |
  4380.   Able to reassemble incoming datagrams          |3.3.2   |x| | | | |
  4381.     At least 576 byte datagrams                  |3.3.2   |x| | | | |
  4382.     EMTU_R configurable or indefinite            |3.3.2   | |x| | | |
  4383.   Transport layer able to learn MMS_R            |3.3.2   |x| | | | |
  4384.   Send ICMP Time Exceeded on reassembly timeout  |3.3.2   |x| | | | |
  4385.     Fixed reassembly timeout value               |3.3.2   | |x| | | |
  4386.                                                  |        | | | | | |
  4387.   Pass MMS_S to higher layers                    |3.3.3   |x| | | | |
  4388.   Local fragmentation of outgoing packets        |3.3.3   | | |x| | |
  4389.      Else don't send bigger than MMS_S           |3.3.3   |x| | | | |
  4390.   Send max 576 to off-net destination            |3.3.3   | |x| | | |
  4391.   All-Subnets-MTU configuration flag             |3.3.3   | | |x| | |
  4392.                                                  |        | | | | | |
  4393. MULTIHOMING:                                     |        | | | | | |
  4394.   Reply with same addr as spec-dest addr         |3.3.4.2 | |x| | | |
  4395.   Allow application to choose local IP addr      |3.3.4.2 |x| | | | |
  4396.   Silently discard d'gram in "wrong" interface   |3.3.4.2 | | |x| | |
  4397.   Only send d'gram through "right" interface     |3.3.4.2 | | |x| | |4
  4398.                                                  |        | | | | | |
  4399. SOURCE-ROUTE FORWARDING:                         |        | | | | | |
  4400.   Forward datagram with Source Route option      |3.3.5   | | |x| | |1
  4401.     Obey corresponding gateway rules             |3.3.5   |x| | | | |1
  4402.       Update TTL by gateway rules                |3.3.5   |x| | | | |1
  4403.       Able to generate ICMP err code 4, 5        |3.3.5   |x| | | | |1
  4404.       IP src addr not local host                 |3.3.5   | | |x| | |1
  4405.       Update Timestamp, Record Route options     |3.3.5   |x| | | | |1
  4406.     Configurable switch for non-local SRing      |3.3.5   |x| | | | |1
  4407.       Defaults to OFF                            |3.3.5   |x| | | | |1
  4408.     Satisfy gwy access rules for non-local SRing |3.3.5   |x| | | | |1
  4409.     If not forward, send Dest Unreach (cd 5)     |3.3.5   | |x| | | |2
  4410.                                                  |        | | | | | |
  4411. BROADCAST:                                       |        | | | | | |
  4412.   Broadcast addr as IP source addr               |3.2.1.3 | | | | |x|
  4413.   Receive 0 or -1 broadcast formats OK           |3.3.6   | |x| | | |
  4414.   Config'ble option to send 0 or -1 b'cast       |3.3.6   | | |x| | |
  4415.     Default to -1 broadcast                      |3.3.6   | |x| | | |
  4416.   Recognize all broadcast address formats        |3.3.6   |x| | | | |
  4417.   Use IP b'cast/m'cast addr in link-layer b'cast |3.3.6   |x| | | | |
  4418.   Silently discard link-layer-only b'cast dg's   |3.3.6   | |x| | | |
  4419.   Use Limited Broadcast addr for connected net   |3.3.6   | |x| | | |
  4420.  
  4421.  
  4422.  
  4423. Internet Engineering Task Force                                [Page 75]
  4424.  
  4425.  
  4426.  
  4427.  
  4428. RFC1122                      INTERNET LAYER                 October 1989
  4429.  
  4430.  
  4431.                                                  |        | | | | | |
  4432. MULTICAST:                                       |        | | | | | |
  4433.   Support local IP multicasting (RFC-1112)       |3.3.7   | |x| | | |
  4434.   Support IGMP (RFC-1112)                        |3.3.7   | | |x| | |
  4435.   Join all-hosts group at startup                |3.3.7   | |x| | | |
  4436.   Higher layers learn i'face m'cast capability   |3.3.7   | |x| | | |
  4437.                                                  |        | | | | | |
  4438. INTERFACE:                                       |        | | | | | |
  4439.   Allow transport layer to use all IP mechanisms |3.4     |x| | | | |
  4440.   Pass interface ident up to transport layer     |3.4     |x| | | | |
  4441.   Pass all IP options up to transport layer      |3.4     |x| | | | |
  4442.   Transport layer can send certain ICMP messages |3.4     |x| | | | |
  4443.   Pass spec'd ICMP messages up to transp. layer  |3.4     |x| | | | |
  4444.      Include IP hdr+8 octets or more from orig.  |3.4     |x| | | | |
  4445.   Able to leap tall buildings at a single bound  |3.5     | |x| | | |
  4446.  
  4447. Footnotes:
  4448.  
  4449. (1)  Only if feature is implemented.
  4450.  
  4451. (2)  This requirement is overruled if datagram is an ICMP error message.
  4452.  
  4453. (3)  Only if feature is implemented and is configured "on".
  4454.  
  4455. (4)  Unless has embedded gateway functionality or is source routed.
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473.  
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482. Internet Engineering Task Force                                [Page 76]
  4483.  
  4484.  
  4485.  
  4486.  
  4487. RFC1122                  TRANSPORT LAYER -- UDP             October 1989
  4488.  
  4489.  
  4490. 4. TRANSPORT PROTOCOLS
  4491.  
  4492.    4.1  USER DATAGRAM PROTOCOL -- UDP
  4493.  
  4494.       4.1.1  INTRODUCTION
  4495.  
  4496.          The User Datagram Protocol UDP [UDP:1] offers only a minimal
  4497.          transport service -- non-guaranteed datagram delivery -- and
  4498.          gives applications direct access to the datagram service of the
  4499.          IP layer.  UDP is used by applications that do not require the
  4500.          level of service of TCP or that wish to use communications
  4501.          services (e.g., multicast or broadcast delivery) not available
  4502.          from TCP.
  4503.  
  4504.          UDP is almost a null protocol; the only services it provides
  4505.          over IP are checksumming of data and multiplexing by port
  4506.          number.  Therefore, an application program running over UDP
  4507.          must deal directly with end-to-end communication problems that
  4508.          a connection-oriented protocol would have handled -- e.g.,
  4509.          retransmission for reliable delivery, packetization and
  4510.          reassembly, flow control, congestion avoidance, etc., when
  4511.          these are required.  The fairly complex coupling between IP and
  4512.          TCP will be mirrored in the coupling between UDP and many
  4513.          applications using UDP.
  4514.  
  4515.       4.1.2  PROTOCOL WALK-THROUGH
  4516.  
  4517.          There are no known errors in the specification of UDP.
  4518.  
  4519.       4.1.3  SPECIFIC ISSUES
  4520.  
  4521.          4.1.3.1  Ports
  4522.  
  4523.             UDP well-known ports follow the same rules as TCP well-known
  4524.             ports; see Section 4.2.2.1 below.
  4525.  
  4526.             If a datagram arrives addressed to a UDP port for which
  4527.             there is no pending LISTEN call, UDP SHOULD send an ICMP
  4528.             Port Unreachable message.
  4529.  
  4530.          4.1.3.2  IP Options
  4531.  
  4532.             UDP MUST pass any IP option that it receives from the IP
  4533.             layer transparently to the application layer.
  4534.  
  4535.             An application MUST be able to specify IP options to be sent
  4536.             in its UDP datagrams, and UDP MUST pass these options to the
  4537.             IP layer.
  4538.  
  4539.  
  4540.  
  4541. Internet Engineering Task Force                                [Page 77]
  4542.  
  4543.  
  4544.  
  4545.  
  4546. RFC1122                  TRANSPORT LAYER -- UDP             October 1989
  4547.  
  4548.  
  4549.             DISCUSSION:
  4550.                  At present, the only options that need be passed
  4551.                  through UDP are Source Route, Record Route, and Time
  4552.                  Stamp.  However, new options may be defined in the
  4553.                  future, and UDP need not and should not make any
  4554.                  assumptions about the format or content of options it
  4555.                  passes to or from the application; an exception to this
  4556.                  might be an IP-layer security option.
  4557.  
  4558.                  An application based on UDP will need to obtain a
  4559.                  source route from a request datagram and supply a
  4560.                  reversed route for sending the corresponding reply.
  4561.  
  4562.          4.1.3.3  ICMP Messages
  4563.  
  4564.             UDP MUST pass to the application layer all ICMP error
  4565.             messages that it receives from the IP layer.  Conceptually
  4566.             at least, this may be accomplished with an upcall to the
  4567.             ERROR_REPORT routine (see Section 4.2.4.1).
  4568.  
  4569.             DISCUSSION:
  4570.                  Note that ICMP error messages resulting from sending a
  4571.                  UDP datagram are received asynchronously.  A UDP-based
  4572.                  application that wants to receive ICMP error messages
  4573.                  is responsible for maintaining the state necessary to
  4574.                  demultiplex these messages when they arrive; for
  4575.                  example, the application may keep a pending receive
  4576.                  operation for this purpose.  The application is also
  4577.                  responsible to avoid confusion from a delayed ICMP
  4578.                  error message resulting from an earlier use of the same
  4579.                  port(s).
  4580.  
  4581.          4.1.3.4  UDP Checksums
  4582.  
  4583.             A host MUST implement the facility to generate and validate
  4584.             UDP checksums.  An application MAY optionally be able to
  4585.             control whether a UDP checksum will be generated, but it
  4586.             MUST default to checksumming on.
  4587.  
  4588.             If a UDP datagram is received with a checksum that is non-
  4589.             zero and invalid, UDP MUST silently discard the datagram.
  4590.             An application MAY optionally be able to control whether UDP
  4591.             datagrams without checksums should be discarded or passed to
  4592.             the application.
  4593.  
  4594.             DISCUSSION:
  4595.                  Some applications that normally run only across local
  4596.                  area networks have chosen to turn off UDP checksums for
  4597.  
  4598.  
  4599.  
  4600. Internet Engineering Task Force                                [Page 78]
  4601.  
  4602.  
  4603.  
  4604.  
  4605. RFC1122                  TRANSPORT LAYER -- UDP             October 1989
  4606.  
  4607.  
  4608.                  efficiency.  As a result, numerous cases of undetected
  4609.                  errors have been reported.  The advisability of ever
  4610.                  turning off UDP checksumming is very controversial.
  4611.  
  4612.             IMPLEMENTATION:
  4613.                  There is a common implementation error in UDP
  4614.                  checksums.  Unlike the TCP checksum, the UDP checksum
  4615.                  is optional; the value zero is transmitted in the
  4616.                  checksum field of a UDP header to indicate the absence
  4617.                  of a checksum.  If the transmitter really calculates a
  4618.                  UDP checksum of zero, it must transmit the checksum as
  4619.                  all 1's (65535).  No special action is required at the
  4620.                  receiver, since zero and 65535 are equivalent in 1's
  4621.                  complement arithmetic.
  4622.  
  4623.          4.1.3.5  UDP Multihoming
  4624.  
  4625.             When a UDP datagram is received, its specific-destination
  4626.             address MUST be passed up to the application layer.
  4627.  
  4628.             An application program MUST be able to specify the IP source
  4629.             address to be used for sending a UDP datagram or to leave it
  4630.             unspecified (in which case the networking software will
  4631.             choose an appropriate source address).  There SHOULD be a
  4632.             way to communicate the chosen source address up to the
  4633.             application layer (e.g, so that the application can later
  4634.             receive a reply datagram only from the corresponding
  4635.             interface).
  4636.  
  4637.             DISCUSSION:
  4638.                  A request/response application that uses UDP should use
  4639.                  a source address for the response that is the same as
  4640.                  the specific destination address of the request.  See
  4641.                  the "General Issues" section of [INTRO:1].
  4642.  
  4643.          4.1.3.6  Invalid Addresses
  4644.  
  4645.             A UDP datagram received with an invalid IP source address
  4646.             (e.g., a broadcast or multicast address) must be discarded
  4647.             by UDP or by the IP layer (see Section 3.2.1.3).
  4648.  
  4649.             When a host sends a UDP datagram, the source address MUST be
  4650.             (one of) the IP address(es) of the host.
  4651.  
  4652.       4.1.4  UDP/APPLICATION LAYER INTERFACE
  4653.  
  4654.          The application interface to UDP MUST provide the full services
  4655.          of the IP/transport interface described in Section 3.4 of this
  4656.  
  4657.  
  4658.  
  4659. Internet Engineering Task Force                                [Page 79]
  4660.  
  4661.  
  4662.  
  4663.  
  4664. RFC1122                  TRANSPORT LAYER -- UDP             October 1989
  4665.  
  4666.  
  4667.          document.  Thus, an application using UDP needs the functions
  4668.          of the GET_SRCADDR(), GET_MAXSIZES(), ADVISE_DELIVPROB(), and
  4669.          RECV_ICMP() calls described in Section 3.4.  For example,
  4670.          GET_MAXSIZES() can be used to learn the effective maximum UDP
  4671.          maximum datagram size for a particular {interface,remote
  4672.          host,TOS} triplet.
  4673.  
  4674.          An application-layer program MUST be able to set the TTL and
  4675.          TOS values as well as IP options for sending a UDP datagram,
  4676.          and these values must be passed transparently to the IP layer.
  4677.          UDP MAY pass the received TOS up to the application layer.
  4678.  
  4679.       4.1.5  UDP REQUIREMENTS SUMMARY
  4680.  
  4681.  
  4682.                                                  |        | | | |S| |
  4683.                                                  |        | | | |H| |F
  4684.                                                  |        | | | |O|M|o
  4685.                                                  |        | |S| |U|U|o
  4686.                                                  |        | |H| |L|S|t
  4687.                                                  |        |M|O| |D|T|n
  4688.                                                  |        |U|U|M| | |o
  4689.                                                  |        |S|L|A|N|N|t
  4690.                                                  |        |T|D|Y|O|O|t
  4691. FEATURE                                          |SECTION | | | |T|T|e
  4692. -------------------------------------------------|--------|-|-|-|-|-|--
  4693.                                                  |        | | | | | |
  4694.     UDP                                          |        | | | | | |
  4695. -------------------------------------------------|--------|-|-|-|-|-|--
  4696.                                                  |        | | | | | |
  4697. UDP send Port Unreachable                        |4.1.3.1 | |x| | | |
  4698.                                                  |        | | | | | |
  4699. IP Options in UDP                                |        | | | | | |
  4700.  - Pass rcv'd IP options to applic layer         |4.1.3.2 |x| | | | |
  4701.  - Applic layer can specify IP options in Send   |4.1.3.2 |x| | | | |
  4702.  - UDP passes IP options down to IP layer        |4.1.3.2 |x| | | | |
  4703.                                                  |        | | | | | |
  4704. Pass ICMP msgs up to applic layer                |4.1.3.3 |x| | | | |
  4705.                                                  |        | | | | | |
  4706. UDP checksums:                                   |        | | | | | |
  4707.  - Able to generate/check checksum               |4.1.3.4 |x| | | | |
  4708.  - Silently discard bad checksum                 |4.1.3.4 |x| | | | |
  4709.  - Sender Option to not generate checksum        |4.1.3.4 | | |x| | |
  4710.    - Default is to checksum                      |4.1.3.4 |x| | | | |
  4711.  - Receiver Option to require checksum           |4.1.3.4 | | |x| | |
  4712.                                                  |        | | | | | |
  4713. UDP Multihoming                                  |        | | | | | |
  4714.  - Pass spec-dest addr to application            |4.1.3.5 |x| | | | |
  4715.  
  4716.  
  4717.  
  4718. Internet Engineering Task Force                                [Page 80]
  4719.  
  4720.  
  4721.  
  4722.  
  4723. RFC1122                  TRANSPORT LAYER -- UDP             October 1989
  4724.  
  4725.  
  4726.  - Applic layer can specify Local IP addr        |4.1.3.5 |x| | | | |
  4727.  - Applic layer specify wild Local IP addr       |4.1.3.5 |x| | | | |
  4728.  - Applic layer notified of Local IP addr used   |4.1.3.5 | |x| | | |
  4729.                                                  |        | | | | | |
  4730. Bad IP src addr silently discarded by UDP/IP     |4.1.3.6 |x| | | | |
  4731. Only send valid IP source address                |4.1.3.6 |x| | | | |
  4732. UDP Application Interface Services               |        | | | | | |
  4733. Full IP interface of 3.4 for application         |4.1.4   |x| | | | |
  4734.  - Able to spec TTL, TOS, IP opts when send dg   |4.1.4   |x| | | | |
  4735.  - Pass received TOS up to applic layer          |4.1.4   | | |x| | |
  4736.  
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.  
  4744.  
  4745.  
  4746.  
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.  
  4762.  
  4763.  
  4764.  
  4765.  
  4766.  
  4767.  
  4768.  
  4769.  
  4770.  
  4771.  
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777. Internet Engineering Task Force                                [Page 81]
  4778.  
  4779.  
  4780.  
  4781.  
  4782. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  4783.  
  4784.  
  4785.    4.2  TRANSMISSION CONTROL PROTOCOL -- TCP
  4786.  
  4787.       4.2.1  INTRODUCTION
  4788.  
  4789.          The Transmission Control Protocol TCP [TCP:1] is the primary
  4790.          virtual-circuit transport protocol for the Internet suite.  TCP
  4791.          provides reliable, in-sequence delivery of a full-duplex stream
  4792.          of octets (8-bit bytes).  TCP is used by those applications
  4793.          needing reliable, connection-oriented transport service, e.g.,
  4794.          mail (SMTP), file transfer (FTP), and virtual terminal service
  4795.          (Telnet); requirements for these application-layer protocols
  4796.          are described in [INTRO:1].
  4797.  
  4798.       4.2.2  PROTOCOL WALK-THROUGH
  4799.  
  4800.          4.2.2.1  Well-Known Ports: RFC-793 Section 2.7
  4801.  
  4802.             DISCUSSION:
  4803.                  TCP reserves port numbers in the range 0-255 for
  4804.                  "well-known" ports, used to access services that are
  4805.                  standardized across the Internet.  The remainder of the
  4806.                  port space can be freely allocated to application
  4807.                  processes.  Current well-known port definitions are
  4808.                  listed in the RFC entitled "Assigned Numbers"
  4809.                  [INTRO:6].  A prerequisite for defining a new well-
  4810.                  known port is an RFC documenting the proposed service
  4811.                  in enough detail to allow new implementations.
  4812.  
  4813.                  Some systems extend this notion by adding a third
  4814.                  subdivision of the TCP port space: reserved ports,
  4815.                  which are generally used for operating-system-specific
  4816.                  services.  For example, reserved ports might fall
  4817.                  between 256 and some system-dependent upper limit.
  4818.                  Some systems further choose to protect well-known and
  4819.                  reserved ports by permitting only privileged users to
  4820.                  open TCP connections with those port values.  This is
  4821.                  perfectly reasonable as long as the host does not
  4822.                  assume that all hosts protect their low-numbered ports
  4823.                  in this manner.
  4824.  
  4825.          4.2.2.2  Use of Push: RFC-793 Section 2.8
  4826.  
  4827.             When an application issues a series of SEND calls without
  4828.             setting the PUSH flag, the TCP MAY aggregate the data
  4829.             internally without sending it.  Similarly, when a series of
  4830.             segments is received without the PSH bit, a TCP MAY queue
  4831.             the data internally without passing it to the receiving
  4832.             application.
  4833.  
  4834.  
  4835.  
  4836. Internet Engineering Task Force                                [Page 82]
  4837.  
  4838.  
  4839.  
  4840.  
  4841. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  4842.  
  4843.  
  4844.             The PSH bit is not a record marker and is independent of
  4845.             segment boundaries.  The transmitter SHOULD collapse
  4846.             successive PSH bits when it packetizes data, to send the
  4847.             largest possible segment.
  4848.  
  4849.             A TCP MAY implement PUSH flags on SEND calls.  If PUSH flags
  4850.             are not implemented, then the sending TCP: (1) must not
  4851.             buffer data indefinitely, and (2) MUST set the PSH bit in
  4852.             the last buffered segment (i.e., when there is no more
  4853.             queued data to be sent).
  4854.  
  4855.             The discussion in RFC-793 on pages 48, 50, and 74
  4856.             erroneously implies that a received PSH flag must be passed
  4857.             to the application layer.  Passing a received PSH flag to
  4858.             the application layer is now OPTIONAL.
  4859.  
  4860.             An application program is logically required to set the PUSH
  4861.             flag in a SEND call whenever it needs to force delivery of
  4862.             the data to avoid a communication deadlock.  However, a TCP
  4863.             SHOULD send a maximum-sized segment whenever possible, to
  4864.             improve performance (see Section 4.2.3.4).
  4865.  
  4866.             DISCUSSION:
  4867.                  When the PUSH flag is not implemented on SEND calls,
  4868.                  i.e., when the application/TCP interface uses a pure
  4869.                  streaming model, responsibility for aggregating any
  4870.                  tiny data fragments to form reasonable sized segments
  4871.                  is partially borne by the application layer.
  4872.  
  4873.                  Generally, an interactive application protocol must set
  4874.                  the PUSH flag at least in the last SEND call in each
  4875.                  command or response sequence.  A bulk transfer protocol
  4876.                  like FTP should set the PUSH flag on the last segment
  4877.                  of a file or when necessary to prevent buffer deadlock.
  4878.  
  4879.                  At the receiver, the PSH bit forces buffered data to be
  4880.                  delivered to the application (even if less than a full
  4881.                  buffer has been received). Conversely, the lack of a
  4882.                  PSH bit can be used to avoid unnecessary wakeup calls
  4883.                  to the application process; this can be an important
  4884.                  performance optimization for large timesharing hosts.
  4885.                  Passing the PSH bit to the receiving application allows
  4886.                  an analogous optimization within the application.
  4887.  
  4888.          4.2.2.3  Window Size: RFC-793 Section 3.1
  4889.  
  4890.             The window size MUST be treated as an unsigned number, or
  4891.             else large window sizes will appear like negative windows
  4892.  
  4893.  
  4894.  
  4895. Internet Engineering Task Force                                [Page 83]
  4896.  
  4897.  
  4898.  
  4899.  
  4900. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  4901.  
  4902.  
  4903.             and TCP will not work.  It is RECOMMENDED that
  4904.             implementations reserve 32-bit fields for the send and
  4905.             receive window sizes in the connection record and do all
  4906.             window computations with 32 bits.
  4907.  
  4908.             DISCUSSION:
  4909.                  It is known that the window field in the TCP header is
  4910.                  too small for high-speed, long-delay paths.
  4911.                  Experimental TCP options have been defined to extend
  4912.                  the window size; see for example [TCP:11].  In
  4913.                  anticipation of the adoption of such an extension, TCP
  4914.                  implementors should treat windows as 32 bits.
  4915.  
  4916.          4.2.2.4  Urgent Pointer: RFC-793 Section 3.1
  4917.  
  4918.             The second sentence is in error: the urgent pointer points
  4919.             to the sequence number of the LAST octet (not LAST+1) in a
  4920.             sequence of urgent data.  The description on page 56 (last
  4921.             sentence) is correct.
  4922.  
  4923.             A TCP MUST support a sequence of urgent data of any length.
  4924.  
  4925.             A TCP MUST inform the application layer asynchronously
  4926.             whenever it receives an Urgent pointer and there was
  4927.             previously no pending urgent data, or whenever the Urgent
  4928.             pointer advances in the data stream.  There MUST be a way
  4929.             for the application to learn how much urgent data remains to
  4930.             be read from the connection, or at least to determine
  4931.             whether or not more urgent data remains to be read.
  4932.  
  4933.             DISCUSSION:
  4934.                  Although the Urgent mechanism may be used for any
  4935.                  application, it is normally used to send "interrupt"-
  4936.                  type commands to a Telnet program (see "Using Telnet
  4937.                  Synch Sequence" section in [INTRO:1]).
  4938.  
  4939.                  The asynchronous or "out-of-band" notification will
  4940.                  allow the application to go into "urgent mode", reading
  4941.                  data from the TCP connection.  This allows control
  4942.                  commands to be sent to an application whose normal
  4943.                  input buffers are full of unprocessed data.
  4944.  
  4945.             IMPLEMENTATION:
  4946.                  The generic ERROR-REPORT() upcall described in Section
  4947.                  4.2.4.1 is a possible mechanism for informing the
  4948.                  application of the arrival of urgent data.
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954. Internet Engineering Task Force                                [Page 84]
  4955.  
  4956.  
  4957.  
  4958.  
  4959. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  4960.  
  4961.  
  4962.          4.2.2.5  TCP Options: RFC-793 Section 3.1
  4963.  
  4964.             A TCP MUST be able to receive a TCP option in any segment.
  4965.             A TCP MUST ignore without error any TCP option it does not
  4966.             implement, assuming that the option has a length field (all
  4967.             TCP options defined in the future will have length fields).
  4968.             TCP MUST be prepared to handle an illegal option length
  4969.             (e.g., zero) without crashing; a suggested procedure is to
  4970.             reset the connection and log the reason.
  4971.  
  4972.          4.2.2.6  Maximum Segment Size Option: RFC-793 Section 3.1
  4973.  
  4974.             TCP MUST implement both sending and receiving the Maximum
  4975.             Segment Size option [TCP:4].
  4976.  
  4977.             TCP SHOULD send an MSS (Maximum Segment Size) option in
  4978.             every SYN segment when its receive MSS differs from the
  4979.             default 536, and MAY send it always.
  4980.  
  4981.             If an MSS option is not received at connection setup, TCP
  4982.             MUST assume a default send MSS of 536 (576-40) [TCP:4].
  4983.  
  4984.             The maximum size of a segment that TCP really sends, the
  4985.             "effective send MSS," MUST be the smaller of the send MSS
  4986.             (which reflects the available reassembly buffer size at the
  4987.             remote host) and the largest size permitted by the IP layer:
  4988.  
  4989.                Eff.snd.MSS =
  4990.  
  4991.                   min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize
  4992.  
  4993.             where:
  4994.  
  4995.             *    SendMSS is the MSS value received from the remote host,
  4996.                  or the default 536 if no MSS option is received.
  4997.  
  4998.             *    MMS_S is the maximum size for a transport-layer message
  4999.                  that TCP may send.
  5000.  
  5001.             *    TCPhdrsize is the size of the TCP header; this is
  5002.                  normally 20, but may be larger if TCP options are to be
  5003.                  sent.
  5004.  
  5005.             *    IPoptionsize is the size of any IP options that TCP
  5006.                  will pass to the IP layer with the current message.
  5007.  
  5008.  
  5009.             The MSS value to be sent in an MSS option must be less than
  5010.  
  5011.  
  5012.  
  5013. Internet Engineering Task Force                                [Page 85]
  5014.  
  5015.  
  5016.  
  5017.  
  5018. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5019.  
  5020.  
  5021.             or equal to:
  5022.  
  5023.                MMS_R - 20
  5024.  
  5025.             where MMS_R is the maximum size for a transport-layer
  5026.             message that can be received (and reassembled).  TCP obtains
  5027.             MMS_R and MMS_S from the IP layer; see the generic call
  5028.             GET_MAXSIZES in Section 3.4.
  5029.  
  5030.             DISCUSSION:
  5031.                  The choice of TCP segment size has a strong effect on
  5032.                  performance.  Larger segments increase throughput by
  5033.                  amortizing header size and per-datagram processing
  5034.                  overhead over more data bytes; however, if the packet
  5035.                  is so large that it causes IP fragmentation, efficiency
  5036.                  drops sharply if any fragments are lost [IP:9].
  5037.  
  5038.                  Some TCP implementations send an MSS option only if the
  5039.                  destination host is on a non-connected network.
  5040.                  However, in general the TCP layer may not have the
  5041.                  appropriate information to make this decision, so it is
  5042.                  preferable to leave to the IP layer the task of
  5043.                  determining a suitable MTU for the Internet path.  We
  5044.                  therefore recommend that TCP always send the option (if
  5045.                  not 536) and that the IP layer determine MMS_R as
  5046.                  specified in 3.3.3 and 3.4.  A proposed IP-layer
  5047.                  mechanism to measure the MTU would then modify the IP
  5048.                  layer without changing TCP.
  5049.  
  5050.          4.2.2.7  TCP Checksum: RFC-793 Section 3.1
  5051.  
  5052.             Unlike the UDP checksum (see Section 4.1.3.4), the TCP
  5053.             checksum is never optional.  The sender MUST generate it and
  5054.             the receiver MUST check it.
  5055.  
  5056.          4.2.2.8  TCP Connection State Diagram: RFC-793 Section 3.2,
  5057.             page 23
  5058.  
  5059.             There are several problems with this diagram:
  5060.  
  5061.             (a)  The arrow from SYN-SENT to SYN-RCVD should be labeled
  5062.                  with "snd SYN,ACK", to agree with the text on page 68
  5063.                  and with Figure 8.
  5064.  
  5065.             (b)  There could be an arrow from SYN-RCVD state to LISTEN
  5066.                  state, conditioned on receiving a RST after a passive
  5067.                  open (see text page 70).
  5068.  
  5069.  
  5070.  
  5071.  
  5072. Internet Engineering Task Force                                [Page 86]
  5073.  
  5074.  
  5075.  
  5076.  
  5077. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5078.  
  5079.  
  5080.             (c)  It is possible to go directly from FIN-WAIT-1 to the
  5081.                  TIME-WAIT state (see page 75 of the spec).
  5082.  
  5083.  
  5084.          4.2.2.9  Initial Sequence Number Selection: RFC-793 Section
  5085.             3.3, page 27
  5086.  
  5087.             A TCP MUST use the specified clock-driven selection of
  5088.             initial sequence numbers.
  5089.  
  5090.          4.2.2.10  Simultaneous Open Attempts: RFC-793 Section 3.4, page
  5091.             32
  5092.  
  5093.             There is an error in Figure 8: the packet on line 7 should
  5094.             be identical to the packet on line 5.
  5095.  
  5096.             A TCP MUST support simultaneous open attempts.
  5097.  
  5098.             DISCUSSION:
  5099.                  It sometimes surprises implementors that if two
  5100.                  applications attempt to simultaneously connect to each
  5101.                  other, only one connection is generated instead of two.
  5102.                  This was an intentional design decision; don't try to
  5103.                  "fix" it.
  5104.  
  5105.          4.2.2.11  Recovery from Old Duplicate SYN: RFC-793 Section 3.4,
  5106.             page 33
  5107.  
  5108.             Note that a TCP implementation MUST keep track of whether a
  5109.             connection has reached SYN_RCVD state as the result of a
  5110.             passive OPEN or an active OPEN.
  5111.  
  5112.          4.2.2.12  RST Segment: RFC-793 Section 3.4
  5113.  
  5114.             A TCP SHOULD allow a received RST segment to include data.
  5115.  
  5116.             DISCUSSION
  5117.                  It has been suggested that a RST segment could contain
  5118.                  ASCII text that encoded and explained the cause of the
  5119.                  RST.  No standard has yet been established for such
  5120.                  data.
  5121.  
  5122.          4.2.2.13  Closing a Connection: RFC-793 Section 3.5
  5123.  
  5124.             A TCP connection may terminate in two ways: (1) the normal
  5125.             TCP close sequence using a FIN handshake, and (2) an "abort"
  5126.             in which one or more RST segments are sent and the
  5127.             connection state is immediately discarded.  If a TCP
  5128.  
  5129.  
  5130.  
  5131. Internet Engineering Task Force                                [Page 87]
  5132.  
  5133.  
  5134.  
  5135.  
  5136. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5137.  
  5138.  
  5139.             connection is closed by the remote site, the local
  5140.             application MUST be informed whether it closed normally or
  5141.             was aborted.
  5142.  
  5143.             The normal TCP close sequence delivers buffered data
  5144.             reliably in both directions.  Since the two directions of a
  5145.             TCP connection are closed independently, it is possible for
  5146.             a connection to be "half closed," i.e., closed in only one
  5147.             direction, and a host is permitted to continue sending data
  5148.             in the open direction on a half-closed connection.
  5149.  
  5150.             A host MAY implement a "half-duplex" TCP close sequence, so
  5151.             that an application that has called CLOSE cannot continue to
  5152.             read data from the connection.  If such a host issues a
  5153.             CLOSE call while received data is still pending in TCP, or
  5154.             if new data is received after CLOSE is called, its TCP
  5155.             SHOULD send a RST to show that data was lost.
  5156.  
  5157.             When a connection is closed actively, it MUST linger in
  5158.             TIME-WAIT state for a time 2xMSL (Maximum Segment Lifetime).
  5159.             However, it MAY accept a new SYN from the remote TCP to
  5160.             reopen the connection directly from TIME-WAIT state, if it:
  5161.  
  5162.             (1)  assigns its initial sequence number for the new
  5163.                  connection to be larger than the largest sequence
  5164.                  number it used on the previous connection incarnation,
  5165.                  and
  5166.  
  5167.             (2)  returns to TIME-WAIT state if the SYN turns out to be
  5168.                  an old duplicate.
  5169.  
  5170.  
  5171.             DISCUSSION:
  5172.                  TCP's full-duplex data-preserving close is a feature
  5173.                  that is not included in the analogous ISO transport
  5174.                  protocol TP4.
  5175.  
  5176.                  Some systems have not implemented half-closed
  5177.                  connections, presumably because they do not fit into
  5178.                  the I/O model of their particular operating system.  On
  5179.                  these systems, once an application has called CLOSE, it
  5180.                  can no longer read input data from the connection; this
  5181.                  is referred to as a "half-duplex" TCP close sequence.
  5182.  
  5183.                  The graceful close algorithm of TCP requires that the
  5184.                  connection state remain defined on (at least)  one end
  5185.                  of the connection, for a timeout period of 2xMSL, i.e.,
  5186.                  4 minutes.  During this period, the (remote socket,
  5187.  
  5188.  
  5189.  
  5190. Internet Engineering Task Force                                [Page 88]
  5191.  
  5192.  
  5193.  
  5194.  
  5195. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5196.  
  5197.  
  5198.                  local socket) pair that defines the connection is busy
  5199.                  and cannot be reused.  To shorten the time that a given
  5200.                  port pair is tied up, some TCPs allow a new SYN to be
  5201.                  accepted in TIME-WAIT state.
  5202.  
  5203.          4.2.2.14  Data Communication: RFC-793 Section 3.7, page 40
  5204.  
  5205.             Since RFC-793 was written, there has been extensive work on
  5206.             TCP algorithms to achieve efficient data communication.
  5207.             Later sections of the present document describe required and
  5208.             recommended TCP algorithms to determine when to send data
  5209.             (Section 4.2.3.4), when to send an acknowledgment (Section
  5210.             4.2.3.2), and when to update the window (Section 4.2.3.3).
  5211.  
  5212.             DISCUSSION:
  5213.                  One important performance issue is "Silly Window
  5214.                  Syndrome" or "SWS" [TCP:5], a stable pattern of small
  5215.                  incremental window movements resulting in extremely
  5216.                  poor TCP performance.  Algorithms to avoid SWS are
  5217.                  described below for both the sending side (Section
  5218.                  4.2.3.4) and the receiving side (Section 4.2.3.3).
  5219.  
  5220.                  In brief, SWS is caused by the receiver advancing the
  5221.                  right window edge whenever it has any new buffer space
  5222.                  available to receive data and by the sender using any
  5223.                  incremental window, no matter how small, to send more
  5224.                  data [TCP:5].  The result can be a stable pattern of
  5225.                  sending tiny data segments, even though both sender and
  5226.                  receiver have a large total buffer space for the
  5227.                  connection.  SWS can only occur during the transmission
  5228.                  of a large amount of data; if the connection goes
  5229.                  quiescent, the problem will disappear.  It is caused by
  5230.                  typical straightforward implementation of window
  5231.                  management, but the sender and receiver algorithms
  5232.                  given below will avoid it.
  5233.  
  5234.                  Another important TCP performance issue is that some
  5235.                  applications, especially remote login to character-at-
  5236.                  a-time hosts, tend to send streams of one-octet data
  5237.                  segments.  To avoid deadlocks, every TCP SEND call from
  5238.                  such applications must be "pushed", either explicitly
  5239.                  by the application or else implicitly by TCP.  The
  5240.                  result may be a stream of TCP segments that contain one
  5241.                  data octet each, which makes very inefficient use of
  5242.                  the Internet and contributes to Internet congestion.
  5243.                  The Nagle Algorithm described in Section 4.2.3.4
  5244.                  provides a simple and effective solution to this
  5245.                  problem.  It does have the effect of clumping
  5246.  
  5247.  
  5248.  
  5249. Internet Engineering Task Force                                [Page 89]
  5250.  
  5251.  
  5252.  
  5253.  
  5254. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5255.  
  5256.  
  5257.                  characters over Telnet connections; this may initially
  5258.                  surprise users accustomed to single-character echo, but
  5259.                  user acceptance has not been a problem.
  5260.  
  5261.                  Note that the Nagle algorithm and the send SWS
  5262.                  avoidance algorithm play complementary roles in
  5263.                  improving performance.  The Nagle algorithm discourages
  5264.                  sending tiny segments when the data to be sent
  5265.                  increases in small increments, while the SWS avoidance
  5266.                  algorithm discourages small segments resulting from the
  5267.                  right window edge advancing in small increments.
  5268.  
  5269.                  A careless implementation can send two or more
  5270.                  acknowledgment segments per data segment received.  For
  5271.                  example, suppose the receiver acknowledges every data
  5272.                  segment immediately.  When the application program
  5273.                  subsequently consumes the data and increases the
  5274.                  available receive buffer space again, the receiver may
  5275.                  send a second acknowledgment segment to update the
  5276.                  window at the sender.  The extreme case occurs with
  5277.                  single-character segments on TCP connections using the
  5278.                  Telnet protocol for remote login service.  Some
  5279.                  implementations have been observed in which each
  5280.                  incoming 1-character segment generates three return
  5281.                  segments: (1) the acknowledgment, (2) a one byte
  5282.                  increase in the window, and (3) the echoed character,
  5283.                  respectively.
  5284.  
  5285.          4.2.2.15  Retransmission Timeout: RFC-793 Section 3.7, page 41
  5286.  
  5287.             The algorithm suggested in RFC-793 for calculating the
  5288.             retransmission timeout is now known to be inadequate; see
  5289.             Section 4.2.3.1 below.
  5290.  
  5291.             Recent work by Jacobson [TCP:7] on Internet congestion and
  5292.             TCP retransmission stability has produced a transmission
  5293.             algorithm combining "slow start" with "congestion
  5294.             avoidance".  A TCP MUST implement this algorithm.
  5295.  
  5296.             If a retransmitted packet is identical to the original
  5297.             packet (which implies not only that the data boundaries have
  5298.             not changed, but also that the window and acknowledgment
  5299.             fields of the header have not changed), then the same IP
  5300.             Identification field MAY be used (see Section 3.2.1.5).
  5301.  
  5302.             IMPLEMENTATION:
  5303.                  Some TCP implementors have chosen to "packetize" the
  5304.                  data stream, i.e., to pick segment boundaries when
  5305.  
  5306.  
  5307.  
  5308. Internet Engineering Task Force                                [Page 90]
  5309.  
  5310.  
  5311.  
  5312.  
  5313. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5314.  
  5315.  
  5316.                  segments are originally sent and to queue these
  5317.                  segments in a "retransmission queue" until they are
  5318.                  acknowledged.  Another design (which may be simpler) is
  5319.                  to defer packetizing until each time data is
  5320.                  transmitted or retransmitted, so there will be no
  5321.                  segment retransmission queue.
  5322.  
  5323.                  In an implementation with a segment retransmission
  5324.                  queue, TCP performance may be enhanced by repacketizing
  5325.                  the segments awaiting acknowledgment when the first
  5326.                  retransmission timeout occurs.  That is, the
  5327.                  outstanding segments that fitted would be combined into
  5328.                  one maximum-sized segment, with a new IP Identification
  5329.                  value.  The TCP would then retain this combined segment
  5330.                  in the retransmit queue until it was acknowledged.
  5331.                  However, if the first two segments in the
  5332.                  retransmission queue totalled more than one maximum-
  5333.                  sized segment, the TCP would retransmit only the first
  5334.                  segment using the original IP Identification field.
  5335.  
  5336.          4.2.2.16  Managing the Window: RFC-793 Section 3.7, page 41
  5337.  
  5338.             A TCP receiver SHOULD NOT shrink the window, i.e., move the
  5339.             right window edge to the left.  However, a sending TCP MUST
  5340.             be robust against window shrinking, which may cause the
  5341.             "useable window" (see Section 4.2.3.4) to become negative.
  5342.  
  5343.             If this happens, the sender SHOULD NOT send new data, but
  5344.             SHOULD retransmit normally the old unacknowledged data
  5345.             between SND.UNA and SND.UNA+SND.WND.  The sender MAY also
  5346.             retransmit old data beyond SND.UNA+SND.WND, but SHOULD NOT
  5347.             time out the connection if data beyond the right window edge
  5348.             is not acknowledged.  If the window shrinks to zero, the TCP
  5349.             MUST probe it in the standard way (see next Section).
  5350.  
  5351.             DISCUSSION:
  5352.                  Many TCP implementations become confused if the window
  5353.                  shrinks from the right after data has been sent into a
  5354.                  larger window.  Note that TCP has a heuristic to select
  5355.                  the latest window update despite possible datagram
  5356.                  reordering; as a result, it may ignore a window update
  5357.                  with a smaller window than previously offered if
  5358.                  neither the sequence number nor the acknowledgment
  5359.                  number is increased.
  5360.  
  5361.  
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367. Internet Engineering Task Force                                [Page 91]
  5368.  
  5369.  
  5370.  
  5371.  
  5372. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5373.  
  5374.  
  5375.          4.2.2.17  Probing Zero Windows: RFC-793 Section 3.7, page 42
  5376.  
  5377.             Probing of zero (offered) windows MUST be supported.
  5378.  
  5379.             A TCP MAY keep its offered receive window closed
  5380.             indefinitely.  As long as the receiving TCP continues to
  5381.             send acknowledgments in response to the probe segments, the
  5382.             sending TCP MUST allow the connection to stay open.
  5383.  
  5384.             DISCUSSION:
  5385.                  It is extremely important to remember that ACK
  5386.                  (acknowledgment) segments that contain no data are not
  5387.                  reliably transmitted by TCP.  If zero window probing is
  5388.                  not supported, a connection may hang forever when an
  5389.                  ACK segment that re-opens the window is lost.
  5390.  
  5391.                  The delay in opening a zero window generally occurs
  5392.                  when the receiving application stops taking data from
  5393.                  its TCP.  For example, consider a printer daemon
  5394.                  application, stopped because the printer ran out of
  5395.                  paper.
  5396.  
  5397.             The transmitting host SHOULD send the first zero-window
  5398.             probe when a zero window has existed for the retransmission
  5399.             timeout period (see Section 4.2.2.15), and SHOULD increase
  5400.             exponentially the interval between successive probes.
  5401.  
  5402.             DISCUSSION:
  5403.                  This procedure minimizes delay if the zero-window
  5404.                  condition is due to a lost ACK segment containing a
  5405.                  window-opening update.  Exponential backoff is
  5406.                  recommended, possibly with some maximum interval not
  5407.                  specified here.  This procedure is similar to that of
  5408.                  the retransmission algorithm, and it may be possible to
  5409.                  combine the two procedures in the implementation.
  5410.  
  5411.          4.2.2.18  Passive OPEN Calls:  RFC-793 Section 3.8
  5412.  
  5413.             Every passive OPEN call either creates a new connection
  5414.             record in LISTEN state, or it returns an error; it MUST NOT
  5415.             affect any previously created connection record.
  5416.  
  5417.             A TCP that supports multiple concurrent users MUST provide
  5418.             an OPEN call that will functionally allow an application to
  5419.             LISTEN on a port while a connection block with the same
  5420.             local port is in SYN-SENT or SYN-RECEIVED state.
  5421.  
  5422.             DISCUSSION:
  5423.  
  5424.  
  5425.  
  5426. Internet Engineering Task Force                                [Page 92]
  5427.  
  5428.  
  5429.  
  5430.  
  5431. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5432.  
  5433.  
  5434.                  Some applications (e.g., SMTP servers) may need to
  5435.                  handle multiple connection attempts at about the same
  5436.                  time.  The probability of a connection attempt failing
  5437.                  is reduced by giving the application some means of
  5438.                  listening for a new connection at the same time that an
  5439.                  earlier connection attempt is going through the three-
  5440.                  way handshake.
  5441.  
  5442.             IMPLEMENTATION:
  5443.                  Acceptable implementations of concurrent opens may
  5444.                  permit multiple passive OPEN calls, or they may allow
  5445.                  "cloning" of LISTEN-state connections from a single
  5446.                  passive OPEN call.
  5447.  
  5448.          4.2.2.19  Time to Live: RFC-793 Section 3.9, page 52
  5449.  
  5450.             RFC-793 specified that TCP was to request the IP layer to
  5451.             send TCP segments with TTL = 60.  This is obsolete; the TTL
  5452.             value used to send TCP segments MUST be configurable.  See
  5453.             Section 3.2.1.7 for discussion.
  5454.  
  5455.          4.2.2.20  Event Processing: RFC-793 Section 3.9
  5456.  
  5457.             While it is not strictly required, a TCP SHOULD be capable
  5458.             of queueing out-of-order TCP segments.  Change the "may" in
  5459.             the last sentence of the first paragraph on page 70 to
  5460.             "should".
  5461.  
  5462.             DISCUSSION:
  5463.                  Some small-host implementations have omitted segment
  5464.                  queueing because of limited buffer space.  This
  5465.                  omission may be expected to adversely affect TCP
  5466.                  throughput, since loss of a single segment causes all
  5467.                  later segments to appear to be "out of sequence".
  5468.  
  5469.             In general, the processing of received segments MUST be
  5470.             implemented to aggregate ACK segments whenever possible.
  5471.             For example, if the TCP is processing a series of queued
  5472.             segments, it MUST process them all before sending any ACK
  5473.             segments.
  5474.  
  5475.             Here are some detailed error corrections and notes on the
  5476.             Event Processing section of RFC-793.
  5477.  
  5478.             (a)  CLOSE Call, CLOSE-WAIT state, p. 61: enter LAST-ACK
  5479.                  state, not CLOSING.
  5480.  
  5481.             (b)  LISTEN state, check for SYN (pp. 65, 66): With a SYN
  5482.  
  5483.  
  5484.  
  5485. Internet Engineering Task Force                                [Page 93]
  5486.  
  5487.  
  5488.  
  5489.  
  5490. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5491.  
  5492.  
  5493.                  bit, if the security/compartment or the precedence is
  5494.                  wrong for the segment, a reset is sent.  The wrong form
  5495.                  of reset is shown in the text; it should be:
  5496.  
  5497.                    <SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
  5498.  
  5499.  
  5500.             (c)  SYN-SENT state, Check for SYN, p. 68: When the
  5501.                  connection enters ESTABLISHED state, the following
  5502.                  variables must be set:
  5503.                     SND.WND <- SEG.WND
  5504.                     SND.WL1 <- SEG.SEQ
  5505.                     SND.WL2 <- SEG.ACK
  5506.  
  5507.  
  5508.             (d)  Check security and precedence, p. 71: The first heading
  5509.                  "ESTABLISHED STATE" should really be a list of all
  5510.                  states other than SYN-RECEIVED: ESTABLISHED, FIN-WAIT-
  5511.                  1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, and
  5512.                  TIME-WAIT.
  5513.  
  5514.             (e)  Check SYN bit, p. 71:  "In SYN-RECEIVED state and if
  5515.                  the connection was initiated with a passive OPEN, then
  5516.                  return this connection to the LISTEN state and return.
  5517.                  Otherwise...".
  5518.  
  5519.             (f)  Check ACK field, SYN-RECEIVED state, p. 72: When the
  5520.                  connection enters ESTABLISHED state, the variables
  5521.                  listed in (c) must be set.
  5522.  
  5523.             (g)  Check ACK field, ESTABLISHED state, p. 72: The ACK is a
  5524.                  duplicate if SEG.ACK =< SND.UNA (the = was omitted).
  5525.                  Similarly, the window should be updated if: SND.UNA =<
  5526.                  SEG.ACK =< SND.NXT.
  5527.  
  5528.             (h)  USER TIMEOUT, p. 77:
  5529.  
  5530.                  It would be better to notify the application of the
  5531.                  timeout rather than letting TCP force the connection
  5532.                  closed.  However, see also Section 4.2.3.5.
  5533.  
  5534.  
  5535.          4.2.2.21  Acknowledging Queued Segments: RFC-793 Section 3.9
  5536.  
  5537.             A TCP MAY send an ACK segment acknowledging RCV.NXT when a
  5538.             valid segment arrives that is in the window but not at the
  5539.             left window edge.
  5540.  
  5541.  
  5542.  
  5543.  
  5544. Internet Engineering Task Force                                [Page 94]
  5545.  
  5546.  
  5547.  
  5548.  
  5549. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5550.  
  5551.  
  5552.             DISCUSSION:
  5553.                  RFC-793 (see page 74) was ambiguous about whether or
  5554.                  not an ACK segment should be sent when an out-of-order
  5555.                  segment was received, i.e., when SEG.SEQ was unequal to
  5556.                  RCV.NXT.
  5557.  
  5558.                  One reason for ACKing out-of-order segments might be to
  5559.                  support an experimental algorithm known as "fast
  5560.                  retransmit".   With this algorithm, the sender uses the
  5561.                  "redundant" ACK's to deduce that a segment has been
  5562.                  lost before the retransmission timer has expired.  It
  5563.                  counts the number of times an ACK has been received
  5564.                  with the same value of SEG.ACK and with the same right
  5565.                  window edge.  If more than a threshold number of such
  5566.                  ACK's is received, then the segment containing the
  5567.                  octets starting at SEG.ACK is assumed to have been lost
  5568.                  and is retransmitted, without awaiting a timeout.  The
  5569.                  threshold is chosen to compensate for the maximum
  5570.                  likely segment reordering in the Internet.  There is
  5571.                  not yet enough experience with the fast retransmit
  5572.                  algorithm to determine how useful it is.
  5573.  
  5574.       4.2.3  SPECIFIC ISSUES
  5575.  
  5576.          4.2.3.1  Retransmission Timeout Calculation
  5577.  
  5578.             A host TCP MUST implement Karn's algorithm and Jacobson's
  5579.             algorithm for computing the retransmission timeout ("RTO").
  5580.  
  5581.             o    Jacobson's algorithm for computing the smoothed round-
  5582.                  trip ("RTT") time incorporates a simple measure of the
  5583.                  variance [TCP:7].
  5584.  
  5585.             o    Karn's algorithm for selecting RTT measurements ensures
  5586.                  that ambiguous round-trip times will not corrupt the
  5587.                  calculation of the smoothed round-trip time [TCP:6].
  5588.  
  5589.             This implementation also MUST include "exponential backoff"
  5590.             for successive RTO values for the same segment.
  5591.             Retransmission of SYN segments SHOULD use the same algorithm
  5592.             as data segments.
  5593.  
  5594.             DISCUSSION:
  5595.                  There were two known problems with the RTO calculations
  5596.                  specified in RFC-793.  First, the accurate measurement
  5597.                  of RTTs is difficult when there are retransmissions.
  5598.                  Second, the algorithm to compute the smoothed round-
  5599.                  trip time is inadequate [TCP:7], because it incorrectly
  5600.  
  5601.  
  5602.  
  5603. Internet Engineering Task Force                                [Page 95]
  5604.  
  5605.  
  5606.  
  5607.  
  5608. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5609.  
  5610.  
  5611.                  assumed that the variance in RTT values would be small
  5612.                  and constant.  These problems were solved by Karn's and
  5613.                  Jacobson's algorithm, respectively.
  5614.  
  5615.                  The performance increase resulting from the use of
  5616.                  these improvements varies from noticeable to dramatic.
  5617.                  Jacobson's algorithm for incorporating the measured RTT
  5618.                  variance is especially important on a low-speed link,
  5619.                  where the natural variation of packet sizes causes a
  5620.                  large variation in RTT.  One vendor found link
  5621.                  utilization on a 9.6kb line went from 10% to 90% as a
  5622.                  result of implementing Jacobson's variance algorithm in
  5623.                  TCP.
  5624.  
  5625.             The following values SHOULD be used to initialize the
  5626.             estimation parameters for a new connection:
  5627.  
  5628.             (a)  RTT = 0 seconds.
  5629.  
  5630.             (b)  RTO = 3 seconds.  (The smoothed variance is to be
  5631.                  initialized to the value that will result in this RTO).
  5632.  
  5633.             The recommended upper and lower bounds on the RTO are known
  5634.             to be inadequate on large internets.  The lower bound SHOULD
  5635.             be measured in fractions of a second (to accommodate high
  5636.             speed LANs) and the upper bound should be 2*MSL, i.e., 240
  5637.             seconds.
  5638.  
  5639.             DISCUSSION:
  5640.                  Experience has shown that these initialization values
  5641.                  are reasonable, and that in any case the Karn and
  5642.                  Jacobson algorithms make TCP behavior reasonably
  5643.                  insensitive to the initial parameter choices.
  5644.  
  5645.          4.2.3.2  When to Send an ACK Segment
  5646.  
  5647.             A host that is receiving a stream of TCP data segments can
  5648.             increase efficiency in both the Internet and the hosts by
  5649.             sending fewer than one ACK (acknowledgment) segment per data
  5650.             segment received; this is known as a "delayed ACK" [TCP:5].
  5651.  
  5652.             A TCP SHOULD implement a delayed ACK, but an ACK should not
  5653.             be excessively delayed; in particular, the delay MUST be
  5654.             less than 0.5 seconds, and in a stream of full-sized
  5655.             segments there SHOULD be an ACK for at least every second
  5656.             segment.
  5657.  
  5658.             DISCUSSION:
  5659.  
  5660.  
  5661.  
  5662. Internet Engineering Task Force                                [Page 96]
  5663.  
  5664.  
  5665.  
  5666.  
  5667. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5668.  
  5669.  
  5670.                  A delayed ACK gives the application an opportunity to
  5671.                  update the window and perhaps to send an immediate
  5672.                  response.  In particular, in the case of character-mode
  5673.                  remote login, a delayed ACK can reduce the number of
  5674.                  segments sent by the server by a factor of 3 (ACK,
  5675.                  window update, and echo character all combined in one
  5676.                  segment).
  5677.  
  5678.                  In addition, on some large multi-user hosts, a delayed
  5679.                  ACK can substantially reduce protocol processing
  5680.                  overhead by reducing the total number of packets to be
  5681.                  processed [TCP:5].  However, excessive delays on ACK's
  5682.                  can disturb the round-trip timing and packet "clocking"
  5683.                  algorithms [TCP:7].
  5684.  
  5685.          4.2.3.3  When to Send a Window Update
  5686.  
  5687.             A TCP MUST include a SWS avoidance algorithm in the receiver
  5688.             [TCP:5].
  5689.  
  5690.             IMPLEMENTATION:
  5691.                  The receiver's SWS avoidance algorithm determines when
  5692.                  the right window edge may be advanced; this is
  5693.                  customarily known as "updating the window".  This
  5694.                  algorithm combines with the delayed ACK algorithm (see
  5695.                  Section 4.2.3.2) to determine when an ACK segment
  5696.                  containing the current window will really be sent to
  5697.                  the receiver.  We use the notation of RFC-793; see
  5698.                  Figures 4 and 5 in that document.
  5699.  
  5700.                  The solution to receiver SWS is to avoid advancing the
  5701.                  right window edge RCV.NXT+RCV.WND in small increments,
  5702.                  even if data is received from the network in small
  5703.                  segments.
  5704.  
  5705.                  Suppose the total receive buffer space is RCV.BUFF.  At
  5706.                  any given moment, RCV.USER octets of this total may be
  5707.                  tied up with data that has been received and
  5708.                  acknowledged but which the user process has not yet
  5709.                  consumed.  When the connection is quiescent, RCV.WND =
  5710.                  RCV.BUFF and RCV.USER = 0.
  5711.  
  5712.                  Keeping the right window edge fixed as data arrives and
  5713.                  is acknowledged requires that the receiver offer less
  5714.                  than its full buffer space, i.e., the receiver must
  5715.                  specify a RCV.WND that keeps RCV.NXT+RCV.WND constant
  5716.                  as RCV.NXT increases.  Thus, the total buffer space
  5717.                  RCV.BUFF is generally divided into three parts:
  5718.  
  5719.  
  5720.  
  5721. Internet Engineering Task Force                                [Page 97]
  5722.  
  5723.  
  5724.  
  5725.  
  5726. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5727.  
  5728.  
  5729.  
  5730.                  |<------- RCV.BUFF ---------------->|
  5731.                       1             2            3
  5732.              ----|---------|------------------|------|----
  5733.                         RCV.NXT               ^
  5734.                                            (Fixed)
  5735.  
  5736.              1 - RCV.USER =  data received but not yet consumed;
  5737.              2 - RCV.WND =   space advertised to sender;
  5738.              3 - Reduction = space available but not yet
  5739.                              advertised.
  5740.  
  5741.  
  5742.                  The suggested SWS avoidance algorithm for the receiver
  5743.                  is to keep RCV.NXT+RCV.WND fixed until the reduction
  5744.                  satisfies:
  5745.  
  5746.                       RCV.BUFF - RCV.USER - RCV.WND  >=
  5747.  
  5748.                              min( Fr * RCV.BUFF, Eff.snd.MSS )
  5749.  
  5750.                  where Fr is a fraction whose recommended value is 1/2,
  5751.                  and Eff.snd.MSS is the effective send MSS for the
  5752.                  connection (see Section 4.2.2.6).  When the inequality
  5753.                  is satisfied, RCV.WND is set to RCV.BUFF-RCV.USER.
  5754.  
  5755.                  Note that the general effect of this algorithm is to
  5756.                  advance RCV.WND in increments of Eff.snd.MSS (for
  5757.                  realistic receive buffers:  Eff.snd.MSS < RCV.BUFF/2).
  5758.                  Note also that the receiver must use its own
  5759.                  Eff.snd.MSS, assuming it is the same as the sender's.
  5760.  
  5761.          4.2.3.4  When to Send Data
  5762.  
  5763.             A TCP MUST include a SWS avoidance algorithm in the sender.
  5764.  
  5765.             A TCP SHOULD implement the Nagle Algorithm [TCP:9] to
  5766.             coalesce short segments.  However, there MUST be a way for
  5767.             an application to disable the Nagle algorithm on an
  5768.             individual connection.  In all cases, sending data is also
  5769.             subject to the limitation imposed by the Slow Start
  5770.             algorithm (Section 4.2.2.15).
  5771.  
  5772.             DISCUSSION:
  5773.                  The Nagle algorithm is generally as follows:
  5774.  
  5775.                       If there is unacknowledged data (i.e., SND.NXT >
  5776.                       SND.UNA), then the sending TCP buffers all user
  5777.  
  5778.  
  5779.  
  5780. Internet Engineering Task Force                                [Page 98]
  5781.  
  5782.  
  5783.  
  5784.  
  5785. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5786.  
  5787.  
  5788.                       data (regardless of the PSH bit), until the
  5789.                       outstanding data has been acknowledged or until
  5790.                       the TCP can send a full-sized segment (Eff.snd.MSS
  5791.                       bytes; see Section 4.2.2.6).
  5792.  
  5793.                  Some applications (e.g., real-time display window
  5794.                  updates) require that the Nagle algorithm be turned
  5795.                  off, so small data segments can be streamed out at the
  5796.                  maximum rate.
  5797.  
  5798.             IMPLEMENTATION:
  5799.                  The sender's SWS avoidance algorithm is more difficult
  5800.                  than the receivers's, because the sender does not know
  5801.                  (directly) the receiver's total buffer space RCV.BUFF.
  5802.                  An approach which has been found to work well is for
  5803.                  the sender to calculate Max(SND.WND), the maximum send
  5804.                  window it has seen so far on the connection, and to use
  5805.                  this value as an estimate of RCV.BUFF.  Unfortunately,
  5806.                  this can only be an estimate; the receiver may at any
  5807.                  time reduce the size of RCV.BUFF.  To avoid a resulting
  5808.                  deadlock, it is necessary to have a timeout to force
  5809.                  transmission of data, overriding the SWS avoidance
  5810.                  algorithm.  In practice, this timeout should seldom
  5811.                  occur.
  5812.  
  5813.                  The "useable window" [TCP:5] is:
  5814.  
  5815.                       U = SND.UNA + SND.WND - SND.NXT
  5816.  
  5817.                  i.e., the offered window less the amount of data sent
  5818.                  but not acknowledged.  If D is the amount of data
  5819.                  queued in the sending TCP but not yet sent, then the
  5820.                  following set of rules is recommended.
  5821.  
  5822.                  Send data:
  5823.  
  5824.                  (1)  if a maximum-sized segment can be sent, i.e, if:
  5825.  
  5826.                            min(D,U) >= Eff.snd.MSS;
  5827.  
  5828.  
  5829.                  (2)  or if the data is pushed and all queued data can
  5830.                       be sent now, i.e., if:
  5831.  
  5832.                           [SND.NXT = SND.UNA and] PUSHED and D <= U
  5833.  
  5834.                       (the bracketed condition is imposed by the Nagle
  5835.                       algorithm);
  5836.  
  5837.  
  5838.  
  5839. Internet Engineering Task Force                                [Page 99]
  5840.  
  5841.  
  5842.  
  5843.  
  5844. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5845.  
  5846.  
  5847.                  (3)  or if at least a fraction Fs of the maximum window
  5848.                       can be sent, i.e., if:
  5849.  
  5850.                           [SND.NXT = SND.UNA and]
  5851.  
  5852.                                   min(D.U) >= Fs * Max(SND.WND);
  5853.  
  5854.  
  5855.                  (4)  or if data is PUSHed and the override timeout
  5856.                       occurs.
  5857.  
  5858.                  Here Fs is a fraction whose recommended value is 1/2.
  5859.                  The override timeout should be in the range 0.1 - 1.0
  5860.                  seconds.  It may be convenient to combine this timer
  5861.                  with the timer used to probe zero windows (Section
  5862.                  4.2.2.17).
  5863.  
  5864.                  Finally, note that the SWS avoidance algorithm just
  5865.                  specified is to be used instead of the sender-side
  5866.                  algorithm contained in [TCP:5].
  5867.  
  5868.          4.2.3.5  TCP Connection Failures
  5869.  
  5870.             Excessive retransmission of the same segment by TCP
  5871.             indicates some failure of the remote host or the Internet
  5872.             path.  This failure may be of short or long duration.  The
  5873.             following procedure MUST be used to handle excessive
  5874.             retransmissions of data segments [IP:11]:
  5875.  
  5876.             (a)  There are two thresholds R1 and R2 measuring the amount
  5877.                  of retransmission that has occurred for the same
  5878.                  segment.  R1 and R2 might be measured in time units or
  5879.                  as a count of retransmissions.
  5880.  
  5881.             (b)  When the number of transmissions of the same segment
  5882.                  reaches or exceeds threshold R1, pass negative advice
  5883.                  (see Section 3.3.1.4) to the IP layer, to trigger
  5884.                  dead-gateway diagnosis.
  5885.  
  5886.             (c)  When the number of transmissions of the same segment
  5887.                  reaches a threshold R2 greater than R1, close the
  5888.                  connection.
  5889.  
  5890.             (d)  An application MUST be able to set the value for R2 for
  5891.                  a particular connection.  For example, an interactive
  5892.                  application might set R2 to "infinity," giving the user
  5893.                  control over when to disconnect.
  5894.  
  5895.  
  5896.  
  5897.  
  5898. Internet Engineering Task Force                               [Page 100]
  5899.  
  5900.  
  5901.  
  5902.  
  5903. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5904.  
  5905.  
  5906.             (d)  TCP SHOULD inform the application of the delivery
  5907.                  problem (unless such information has been disabled by
  5908.                  the application; see Section 4.2.4.1), when R1 is
  5909.                  reached and before R2.  This will allow a remote login
  5910.                  (User Telnet) application program to inform the user,
  5911.                  for example.
  5912.  
  5913.             The value of R1 SHOULD correspond to at least 3
  5914.             retransmissions, at the current RTO.  The value of R2 SHOULD
  5915.             correspond to at least 100 seconds.
  5916.  
  5917.             An attempt to open a TCP connection could fail with
  5918.             excessive retransmissions of the SYN segment or by receipt
  5919.             of a RST segment or an ICMP Port Unreachable.  SYN
  5920.             retransmissions MUST be handled in the general way just
  5921.             described for data retransmissions, including notification
  5922.             of the application layer.
  5923.  
  5924.             However, the values of R1 and R2 may be different for SYN
  5925.             and data segments.  In particular, R2 for a SYN segment MUST
  5926.             be set large enough to provide retransmission of the segment
  5927.             for at least 3 minutes.  The application can close the
  5928.             connection (i.e., give up on the open attempt) sooner, of
  5929.             course.
  5930.  
  5931.             DISCUSSION:
  5932.                  Some Internet paths have significant setup times, and
  5933.                  the number of such paths is likely to increase in the
  5934.                  future.
  5935.  
  5936.          4.2.3.6  TCP Keep-Alives
  5937.  
  5938.             Implementors MAY include "keep-alives" in their TCP
  5939.             implementations, although this practice is not universally
  5940.             accepted.  If keep-alives are included, the application MUST
  5941.             be able to turn them on or off for each TCP connection, and
  5942.             they MUST default to off.
  5943.  
  5944.             Keep-alive packets MUST only be sent when no data or
  5945.             acknowledgement packets have been received for the
  5946.             connection within an interval.  This interval MUST be
  5947.             configurable and MUST default to no less than two hours.
  5948.  
  5949.             It is extremely important to remember that ACK segments that
  5950.             contain no data are not reliably transmitted by TCP.
  5951.             Consequently, if a keep-alive mechanism is implemented it
  5952.             MUST NOT interpret failure to respond to any specific probe
  5953.             as a dead connection.
  5954.  
  5955.  
  5956.  
  5957. Internet Engineering Task Force                               [Page 101]
  5958.  
  5959.  
  5960.  
  5961.  
  5962. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  5963.  
  5964.  
  5965.             An implementation SHOULD send a keep-alive segment with no
  5966.             data; however, it MAY be configurable to send a keep-alive
  5967.             segment containing one garbage octet, for compatibility with
  5968.             erroneous TCP implementations.
  5969.  
  5970.             DISCUSSION:
  5971.                  A "keep-alive" mechanism periodically probes the other
  5972.                  end of a connection when the connection is otherwise
  5973.                  idle, even when there is no data to be sent.  The TCP
  5974.                  specification does not include a keep-alive mechanism
  5975.                  because it could:  (1) cause perfectly good connections
  5976.                  to break during transient Internet failures; (2)
  5977.                  consume unnecessary bandwidth ("if no one is using the
  5978.                  connection, who cares if it is still good?"); and (3)
  5979.                  cost money for an Internet path that charges for
  5980.                  packets.
  5981.  
  5982.                  Some TCP implementations, however, have included a
  5983.                  keep-alive mechanism.  To confirm that an idle
  5984.                  connection is still active, these implementations send
  5985.                  a probe segment designed to elicit a response from the
  5986.                  peer TCP.  Such a segment generally contains SEG.SEQ =
  5987.                  SND.NXT-1 and may or may not contain one garbage octet
  5988.                  of data.  Note that on a quiet connection SND.NXT =
  5989.                  RCV.NXT, so that this SEG.SEQ will be outside the
  5990.                  window.  Therefore, the probe causes the receiver to
  5991.                  return an acknowledgment segment, confirming that the
  5992.                  connection is still live.  If the peer has dropped the
  5993.                  connection due to a network partition or a crash, it
  5994.                  will respond with a RST instead of an acknowledgment
  5995.                  segment.
  5996.  
  5997.                  Unfortunately, some misbehaved TCP implementations fail
  5998.                  to respond to a segment with SEG.SEQ = SND.NXT-1 unless
  5999.                  the segment contains data.  Alternatively, an
  6000.                  implementation could determine whether a peer responded
  6001.                  correctly to keep-alive packets with no garbage data
  6002.                  octet.
  6003.  
  6004.                  A TCP keep-alive mechanism should only be invoked in
  6005.                  server applications that might otherwise hang
  6006.                  indefinitely and consume resources unnecessarily if a
  6007.                  client crashes or aborts a connection during a network
  6008.                  failure.
  6009.  
  6010.  
  6011.  
  6012.  
  6013.  
  6014.  
  6015.  
  6016. Internet Engineering Task Force                               [Page 102]
  6017.  
  6018.  
  6019.  
  6020.  
  6021. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6022.  
  6023.  
  6024.          4.2.3.7  TCP Multihoming
  6025.  
  6026.             If an application on a multihomed host does not specify the
  6027.             local IP address when actively opening a TCP connection,
  6028.             then the TCP MUST ask the IP layer to select a local IP
  6029.             address before sending the (first) SYN.  See the function
  6030.             GET_SRCADDR() in Section 3.4.
  6031.  
  6032.             At all other times, a previous segment has either been sent
  6033.             or received on this connection, and TCP MUST use the same
  6034.             local address is used that was used in those previous
  6035.             segments.
  6036.  
  6037.          4.2.3.8  IP Options
  6038.  
  6039.             When received options are passed up to TCP from the IP
  6040.             layer, TCP MUST ignore options that it does not understand.
  6041.  
  6042.             A TCP MAY support the Time Stamp and Record Route options.
  6043.  
  6044.             An application MUST be able to specify a source route when
  6045.             it actively opens a TCP connection, and this MUST take
  6046.             precedence over a source route received in a datagram.
  6047.  
  6048.             When a TCP connection is OPENed passively and a packet
  6049.             arrives with a completed IP Source Route option (containing
  6050.             a return route), TCP MUST save the return route and use it
  6051.             for all segments sent on this connection.  If a different
  6052.             source route arrives in a later segment, the later
  6053.             definition SHOULD override the earlier one.
  6054.  
  6055.          4.2.3.9  ICMP Messages
  6056.  
  6057.             TCP MUST act on an ICMP error message passed up from the IP
  6058.             layer, directing it to the connection that created the
  6059.             error.  The necessary demultiplexing information can be
  6060.             found in the IP header contained within the ICMP message.
  6061.  
  6062.             o    Source Quench
  6063.  
  6064.                  TCP MUST react to a Source Quench by slowing
  6065.                  transmission on the connection.  The RECOMMENDED
  6066.                  procedure is for a Source Quench to trigger a "slow
  6067.                  start," as if a retransmission timeout had occurred.
  6068.  
  6069.             o    Destination Unreachable -- codes 0, 1, 5
  6070.  
  6071.                  Since these Unreachable messages indicate soft error
  6072.  
  6073.  
  6074.  
  6075. Internet Engineering Task Force                               [Page 103]
  6076.  
  6077.  
  6078.  
  6079.  
  6080. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6081.  
  6082.  
  6083.                  conditions, TCP MUST NOT abort the connection, and it
  6084.                  SHOULD make the information available to the
  6085.                  application.
  6086.  
  6087.                  DISCUSSION:
  6088.                       TCP could report the soft error condition directly
  6089.                       to the application layer with an upcall to the
  6090.                       ERROR_REPORT routine, or it could merely note the
  6091.                       message and report it to the application only when
  6092.                       and if the TCP connection times out.
  6093.  
  6094.             o    Destination Unreachable -- codes 2-4
  6095.  
  6096.                  These are hard error conditions, so TCP SHOULD abort
  6097.                  the connection.
  6098.  
  6099.             o    Time Exceeded -- codes 0, 1
  6100.  
  6101.                  This should be handled the same way as Destination
  6102.                  Unreachable codes 0, 1, 5 (see above).
  6103.  
  6104.             o    Parameter Problem
  6105.  
  6106.                  This should be handled the same way as Destination
  6107.                  Unreachable codes 0, 1, 5 (see above).
  6108.  
  6109.  
  6110.          4.2.3.10  Remote Address Validation
  6111.  
  6112.             A TCP implementation MUST reject as an error a local OPEN
  6113.             call for an invalid remote IP address (e.g., a broadcast or
  6114.             multicast address).
  6115.  
  6116.             An incoming SYN with an invalid source address must be
  6117.             ignored either by TCP or by the IP layer (see Section
  6118.             3.2.1.3).
  6119.  
  6120.             A TCP implementation MUST silently discard an incoming SYN
  6121.             segment that is addressed to a broadcast or multicast
  6122.             address.
  6123.  
  6124.          4.2.3.11  TCP Traffic Patterns
  6125.  
  6126.             IMPLEMENTATION:
  6127.                  The TCP protocol specification [TCP:1] gives the
  6128.                  implementor much freedom in designing the algorithms
  6129.                  that control the message flow over the connection --
  6130.                  packetizing, managing the window, sending
  6131.  
  6132.  
  6133.  
  6134. Internet Engineering Task Force                               [Page 104]
  6135.  
  6136.  
  6137.  
  6138.  
  6139. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6140.  
  6141.  
  6142.                  acknowledgments, etc.  These design decisions are
  6143.                  difficult because a TCP must adapt to a wide range of
  6144.                  traffic patterns.  Experience has shown that a TCP
  6145.                  implementor needs to verify the design on two extreme
  6146.                  traffic patterns:
  6147.  
  6148.                  o    Single-character Segments
  6149.  
  6150.                       Even if the sender is using the Nagle Algorithm,
  6151.                       when a TCP connection carries remote login traffic
  6152.                       across a low-delay LAN the receiver will generally
  6153.                       get a stream of single-character segments.  If
  6154.                       remote terminal echo mode is in effect, the
  6155.                       receiver's system will generally echo each
  6156.                       character as it is received.
  6157.  
  6158.                  o    Bulk Transfer
  6159.  
  6160.                       When TCP is used for bulk transfer, the data
  6161.                       stream should be made up (almost) entirely of
  6162.                       segments of the size of the effective MSS.
  6163.                       Although TCP uses a sequence number space with
  6164.                       byte (octet) granularity, in bulk-transfer mode
  6165.                       its operation should be as if TCP used a sequence
  6166.                       space that counted only segments.
  6167.  
  6168.                  Experience has furthermore shown that a single TCP can
  6169.                  effectively and efficiently handle these two extremes.
  6170.  
  6171.                  The most important tool for verifying a new TCP
  6172.                  implementation is a packet trace program.  There is a
  6173.                  large volume of experience showing the importance of
  6174.                  tracing a variety of traffic patterns with other TCP
  6175.                  implementations and studying the results carefully.
  6176.  
  6177.  
  6178.          4.2.3.12  Efficiency
  6179.  
  6180.             IMPLEMENTATION:
  6181.                  Extensive experience has led to the following
  6182.                  suggestions for efficient implementation of TCP:
  6183.  
  6184.                  (a)  Don't Copy Data
  6185.  
  6186.                       In bulk data transfer, the primary CPU-intensive
  6187.                       tasks are copying data from one place to another
  6188.                       and checksumming the data.  It is vital to
  6189.                       minimize the number of copies of TCP data.  Since
  6190.  
  6191.  
  6192.  
  6193. Internet Engineering Task Force                               [Page 105]
  6194.  
  6195.  
  6196.  
  6197.  
  6198. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6199.  
  6200.  
  6201.                       the ultimate speed limitation may be fetching data
  6202.                       across the memory bus, it may be useful to combine
  6203.                       the copy with checksumming, doing both with a
  6204.                       single memory fetch.
  6205.  
  6206.                  (b)  Hand-Craft the Checksum Routine
  6207.  
  6208.                       A good TCP checksumming routine is typically two
  6209.                       to five times faster than a simple and direct
  6210.                       implementation of the definition.  Great care and
  6211.                       clever coding are often required and advisable to
  6212.                       make the checksumming code "blazing fast".  See
  6213.                       [TCP:10].
  6214.  
  6215.                  (c)  Code for the Common Case
  6216.  
  6217.                       TCP protocol processing can be complicated, but
  6218.                       for most segments there are only a few simple
  6219.                       decisions to be made.  Per-segment processing will
  6220.                       be greatly speeded up by coding the main line to
  6221.                       minimize the number of decisions in the most
  6222.                       common case.
  6223.  
  6224.  
  6225.       4.2.4  TCP/APPLICATION LAYER INTERFACE
  6226.  
  6227.          4.2.4.1  Asynchronous Reports
  6228.  
  6229.             There MUST be a mechanism for reporting soft TCP error
  6230.             conditions to the application.  Generically, we assume this
  6231.             takes the form of an application-supplied ERROR_REPORT
  6232.             routine that may be upcalled [INTRO:7] asynchronously from
  6233.             the transport layer:
  6234.  
  6235.                ERROR_REPORT(local connection name, reason, subreason)
  6236.  
  6237.             The precise encoding of the reason and subreason parameters
  6238.             is not specified here.  However, the conditions that are
  6239.             reported asynchronously to the application MUST include:
  6240.  
  6241.             *    ICMP error message arrived (see 4.2.3.9)
  6242.  
  6243.             *    Excessive retransmissions (see 4.2.3.5)
  6244.  
  6245.             *    Urgent pointer advance (see 4.2.2.4).
  6246.  
  6247.             However, an application program that does not want to
  6248.             receive such ERROR_REPORT calls SHOULD be able to
  6249.  
  6250.  
  6251.  
  6252. Internet Engineering Task Force                               [Page 106]
  6253.  
  6254.  
  6255.  
  6256.  
  6257. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6258.  
  6259.  
  6260.             effectively disable these calls.
  6261.  
  6262.             DISCUSSION:
  6263.                  These error reports generally reflect soft errors that
  6264.                  can be ignored without harm by many applications.  It
  6265.                  has been suggested that these error report calls should
  6266.                  default to "disabled," but this is not required.
  6267.  
  6268.          4.2.4.2  Type-of-Service
  6269.  
  6270.             The application layer MUST be able to specify the Type-of-
  6271.             Service (TOS) for segments that are sent on a connection.
  6272.             It not required, but the application SHOULD be able to
  6273.             change the TOS during the connection lifetime.  TCP SHOULD
  6274.             pass the current TOS value without change to the IP layer,
  6275.             when it sends segments on the connection.
  6276.  
  6277.             The TOS will be specified independently in each direction on
  6278.             the connection, so that the receiver application will
  6279.             specify the TOS used for ACK segments.
  6280.  
  6281.             TCP MAY pass the most recently received TOS up to the
  6282.             application.
  6283.  
  6284.             DISCUSSION
  6285.                  Some applications (e.g., SMTP) change the nature of
  6286.                  their communication during the lifetime of a
  6287.                  connection, and therefore would like to change the TOS
  6288.                  specification.
  6289.  
  6290.                  Note also that the OPEN call specified in RFC-793
  6291.                  includes a parameter ("options") in which the caller
  6292.                  can specify IP options such as source route, record
  6293.                  route, or timestamp.
  6294.  
  6295.          4.2.4.3  Flush Call
  6296.  
  6297.             Some TCP implementations have included a FLUSH call, which
  6298.             will empty the TCP send queue of any data for which the user
  6299.             has issued SEND calls but which is still to the right of the
  6300.             current send window.  That is, it flushes as much queued
  6301.             send data as possible without losing sequence number
  6302.             synchronization.  This is useful for implementing the "abort
  6303.             output" function of Telnet.
  6304.  
  6305.  
  6306.  
  6307.  
  6308.  
  6309.  
  6310.  
  6311. Internet Engineering Task Force                               [Page 107]
  6312.  
  6313.  
  6314.  
  6315.  
  6316. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6317.  
  6318.  
  6319.          4.2.4.4  Multihoming
  6320.  
  6321.             The user interface outlined in sections 2.7 and 3.8 of RFC-
  6322.             793 needs to be extended for multihoming.  The OPEN call
  6323.             MUST have an optional parameter:
  6324.  
  6325.                 OPEN( ... [local IP address,] ... )
  6326.  
  6327.             to allow the specification of the local IP address.
  6328.  
  6329.             DISCUSSION:
  6330.                  Some TCP-based applications need to specify the local
  6331.                  IP address to be used to open a particular connection;
  6332.                  FTP is an example.
  6333.  
  6334.             IMPLEMENTATION:
  6335.                  A passive OPEN call with a specified "local IP address"
  6336.                  parameter will await an incoming connection request to
  6337.                  that address.  If the parameter is unspecified, a
  6338.                  passive OPEN will await an incoming connection request
  6339.                  to any local IP address, and then bind the local IP
  6340.                  address of the connection to the particular address
  6341.                  that is used.
  6342.  
  6343.                  For an active OPEN call, a specified "local IP address"
  6344.                  parameter will be used for opening the connection.  If
  6345.                  the parameter is unspecified, the networking software
  6346.                  will choose an appropriate local IP address (see
  6347.                  Section 3.3.4.2) for the connection
  6348.  
  6349.       4.2.5  TCP REQUIREMENT SUMMARY
  6350.  
  6351.                                                  |        | | | |S| |
  6352.                                                  |        | | | |H| |F
  6353.                                                  |        | | | |O|M|o
  6354.                                                  |        | |S| |U|U|o
  6355.                                                  |        | |H| |L|S|t
  6356.                                                  |        |M|O| |D|T|n
  6357.                                                  |        |U|U|M| | |o
  6358.                                                  |        |S|L|A|N|N|t
  6359.                                                  |        |T|D|Y|O|O|t
  6360. FEATURE                                          |SECTION | | | |T|T|e
  6361. -------------------------------------------------|--------|-|-|-|-|-|--
  6362.                                                  |        | | | | | |
  6363. Push flag                                        |        | | | | | |
  6364.   Aggregate or queue un-pushed data              |4.2.2.2 | | |x| | |
  6365.   Sender collapse successive PSH flags           |4.2.2.2 | |x| | | |
  6366.   SEND call can specify PUSH                     |4.2.2.2 | | |x| | |
  6367.  
  6368.  
  6369.  
  6370. Internet Engineering Task Force                               [Page 108]
  6371.  
  6372.  
  6373.  
  6374.  
  6375. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6376.  
  6377.  
  6378.     If cannot: sender buffer indefinitely        |4.2.2.2 | | | | |x|
  6379.     If cannot: PSH last segment                  |4.2.2.2 |x| | | | |
  6380.   Notify receiving ALP of PSH                    |4.2.2.2 | | |x| | |1
  6381.   Send max size segment when possible            |4.2.2.2 | |x| | | |
  6382.                                                  |        | | | | | |
  6383. Window                                           |        | | | | | |
  6384.   Treat as unsigned number                       |4.2.2.3 |x| | | | |
  6385.   Handle as 32-bit number                        |4.2.2.3 | |x| | | |
  6386.   Shrink window from right                       |4.2.2.16| | | |x| |
  6387.   Robust against shrinking window                |4.2.2.16|x| | | | |
  6388.   Receiver's window closed indefinitely          |4.2.2.17| | |x| | |
  6389.   Sender probe zero window                       |4.2.2.17|x| | | | |
  6390.     First probe after RTO                        |4.2.2.17| |x| | | |
  6391.     Exponential backoff                          |4.2.2.17| |x| | | |
  6392.   Allow window stay zero indefinitely            |4.2.2.17|x| | | | |
  6393.   Sender timeout OK conn with zero wind          |4.2.2.17| | | | |x|
  6394.                                                  |        | | | | | |
  6395. Urgent Data                                      |        | | | | | |
  6396.   Pointer points to last octet                   |4.2.2.4 |x| | | | |
  6397.   Arbitrary length urgent data sequence          |4.2.2.4 |x| | | | |
  6398.   Inform ALP asynchronously of urgent data       |4.2.2.4 |x| | | | |1
  6399.   ALP can learn if/how much urgent data Q'd      |4.2.2.4 |x| | | | |1
  6400.                                                  |        | | | | | |
  6401. TCP Options                                      |        | | | | | |
  6402.   Receive TCP option in any segment              |4.2.2.5 |x| | | | |
  6403.   Ignore unsupported options                     |4.2.2.5 |x| | | | |
  6404.   Cope with illegal option length                |4.2.2.5 |x| | | | |
  6405.   Implement sending & receiving MSS option       |4.2.2.6 |x| | | | |
  6406.   Send MSS option unless 536                     |4.2.2.6 | |x| | | |
  6407.   Send MSS option always                         |4.2.2.6 | | |x| | |
  6408.   Send-MSS default is 536                        |4.2.2.6 |x| | | | |
  6409.   Calculate effective send seg size              |4.2.2.6 |x| | | | |
  6410.                                                  |        | | | | | |
  6411. TCP Checksums                                    |        | | | | | |
  6412.   Sender compute checksum                        |4.2.2.7 |x| | | | |
  6413.   Receiver check checksum                        |4.2.2.7 |x| | | | |
  6414.                                                  |        | | | | | |
  6415. Use clock-driven ISN selection                   |4.2.2.9 |x| | | | |
  6416.                                                  |        | | | | | |
  6417. Opening Connections                              |        | | | | | |
  6418.   Support simultaneous open attempts             |4.2.2.10|x| | | | |
  6419.   SYN-RCVD remembers last state                  |4.2.2.11|x| | | | |
  6420.   Passive Open call interfere with others        |4.2.2.18| | | | |x|
  6421.   Function: simultan. LISTENs for same port      |4.2.2.18|x| | | | |
  6422.   Ask IP for src address for SYN if necc.        |4.2.3.7 |x| | | | |
  6423.     Otherwise, use local addr of conn.           |4.2.3.7 |x| | | | |
  6424.   OPEN to broadcast/multicast IP Address         |4.2.3.14| | | | |x|
  6425.   Silently discard seg to bcast/mcast addr       |4.2.3.14|x| | | | |
  6426.  
  6427.  
  6428.  
  6429. Internet Engineering Task Force                               [Page 109]
  6430.  
  6431.  
  6432.  
  6433.  
  6434. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6435.  
  6436.  
  6437.                                                  |        | | | | | |
  6438. Closing Connections                              |        | | | | | |
  6439.   RST can contain data                           |4.2.2.12| |x| | | |
  6440.   Inform application of aborted conn             |4.2.2.13|x| | | | |
  6441.   Half-duplex close connections                  |4.2.2.13| | |x| | |
  6442.     Send RST to indicate data lost               |4.2.2.13| |x| | | |
  6443.   In TIME-WAIT state for 2xMSL seconds           |4.2.2.13|x| | | | |
  6444.     Accept SYN from TIME-WAIT state              |4.2.2.13| | |x| | |
  6445.                                                  |        | | | | | |
  6446. Retransmissions                                  |        | | | | | |
  6447.   Jacobson Slow Start algorithm                  |4.2.2.15|x| | | | |
  6448.   Jacobson Congestion-Avoidance algorithm        |4.2.2.15|x| | | | |
  6449.   Retransmit with same IP ident                  |4.2.2.15| | |x| | |
  6450.   Karn's algorithm                               |4.2.3.1 |x| | | | |
  6451.   Jacobson's RTO estimation alg.                 |4.2.3.1 |x| | | | |
  6452.   Exponential backoff                            |4.2.3.1 |x| | | | |
  6453.   SYN RTO calc same as data                      |4.2.3.1 | |x| | | |
  6454.   Recommended initial values and bounds          |4.2.3.1 | |x| | | |
  6455.                                                  |        | | | | | |
  6456. Generating ACK's:                                |        | | | | | |
  6457.   Queue out-of-order segments                    |4.2.2.20| |x| | | |
  6458.   Process all Q'd before send ACK                |4.2.2.20|x| | | | |
  6459.   Send ACK for out-of-order segment              |4.2.2.21| | |x| | |
  6460.   Delayed ACK's                                  |4.2.3.2 | |x| | | |
  6461.     Delay < 0.5 seconds                          |4.2.3.2 |x| | | | |
  6462.     Every 2nd full-sized segment ACK'd           |4.2.3.2 |x| | | | |
  6463.   Receiver SWS-Avoidance Algorithm               |4.2.3.3 |x| | | | |
  6464.                                                  |        | | | | | |
  6465. Sending data                                     |        | | | | | |
  6466.   Configurable TTL                               |4.2.2.19|x| | | | |
  6467.   Sender SWS-Avoidance Algorithm                 |4.2.3.4 |x| | | | |
  6468.   Nagle algorithm                                |4.2.3.4 | |x| | | |
  6469.     Application can disable Nagle algorithm      |4.2.3.4 |x| | | | |
  6470.                                                  |        | | | | | |
  6471. Connection Failures:                             |        | | | | | |
  6472.   Negative advice to IP on R1 retxs              |4.2.3.5 |x| | | | |
  6473.   Close connection on R2 retxs                   |4.2.3.5 |x| | | | |
  6474.   ALP can set R2                                 |4.2.3.5 |x| | | | |1
  6475.   Inform ALP of  R1<=retxs<R2                    |4.2.3.5 | |x| | | |1
  6476.   Recommended values for R1, R2                  |4.2.3.5 | |x| | | |
  6477.   Same mechanism for SYNs                        |4.2.3.5 |x| | | | |
  6478.     R2 at least 3 minutes for SYN                |4.2.3.5 |x| | | | |
  6479.                                                  |        | | | | | |
  6480. Send Keep-alive Packets:                         |4.2.3.6 | | |x| | |
  6481.   - Application can request                      |4.2.3.6 |x| | | | |
  6482.   - Default is "off"                             |4.2.3.6 |x| | | | |
  6483.   - Only send if idle for interval               |4.2.3.6 |x| | | | |
  6484.   - Interval configurable                        |4.2.3.6 |x| | | | |
  6485.  
  6486.  
  6487.  
  6488. Internet Engineering Task Force                               [Page 110]
  6489.  
  6490.  
  6491.  
  6492.  
  6493. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6494.  
  6495.  
  6496.   - Default at least 2 hrs.                      |4.2.3.6 |x| | | | |
  6497.   - Tolerant of lost ACK's                       |4.2.3.6 |x| | | | |
  6498.                                                  |        | | | | | |
  6499. IP Options                                       |        | | | | | |
  6500.   Ignore options TCP doesn't understand          |4.2.3.8 |x| | | | |
  6501.   Time Stamp support                             |4.2.3.8 | | |x| | |
  6502.   Record Route support                           |4.2.3.8 | | |x| | |
  6503.   Source Route:                                  |        | | | | | |
  6504.     ALP can specify                              |4.2.3.8 |x| | | | |1
  6505.       Overrides src rt in datagram               |4.2.3.8 |x| | | | |
  6506.     Build return route from src rt               |4.2.3.8 |x| | | | |
  6507.     Later src route overrides                    |4.2.3.8 | |x| | | |
  6508.                                                  |        | | | | | |
  6509. Receiving ICMP Messages from IP                  |4.2.3.9 |x| | | | |
  6510.   Dest. Unreach (0,1,5) => inform ALP            |4.2.3.9 | |x| | | |
  6511.   Dest. Unreach (0,1,5) => abort conn            |4.2.3.9 | | | | |x|
  6512.   Dest. Unreach (2-4) => abort conn              |4.2.3.9 | |x| | | |
  6513.   Source Quench => slow start                    |4.2.3.9 | |x| | | |
  6514.   Time Exceeded => tell ALP, don't abort         |4.2.3.9 | |x| | | |
  6515.   Param Problem => tell ALP, don't abort         |4.2.3.9 | |x| | | |
  6516.                                                  |        | | | | | |
  6517. Address Validation                               |        | | | | | |
  6518.   Reject OPEN call to invalid IP address         |4.2.3.10|x| | | | |
  6519.   Reject SYN from invalid IP address             |4.2.3.10|x| | | | |
  6520.   Silently discard SYN to bcast/mcast addr       |4.2.3.10|x| | | | |
  6521.                                                  |        | | | | | |
  6522. TCP/ALP Interface Services                       |        | | | | | |
  6523.   Error Report mechanism                         |4.2.4.1 |x| | | | |
  6524.   ALP can disable Error Report Routine           |4.2.4.1 | |x| | | |
  6525.   ALP can specify TOS for sending                |4.2.4.2 |x| | | | |
  6526.     Passed unchanged to IP                       |4.2.4.2 | |x| | | |
  6527.   ALP can change TOS during connection           |4.2.4.2 | |x| | | |
  6528.   Pass received TOS up to ALP                    |4.2.4.2 | | |x| | |
  6529.   FLUSH call                                     |4.2.4.3 | | |x| | |
  6530.   Optional local IP addr parm. in OPEN           |4.2.4.4 |x| | | | |
  6531. -------------------------------------------------|--------|-|-|-|-|-|--
  6532. -------------------------------------------------|--------|-|-|-|-|-|--
  6533.  
  6534. FOOTNOTES:
  6535.  
  6536. (1)  "ALP" means Application-Layer program.
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.  
  6543.  
  6544.  
  6545.  
  6546.  
  6547. Internet Engineering Task Force                               [Page 111]
  6548.  
  6549.  
  6550.  
  6551.  
  6552. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6553.  
  6554.  
  6555. 5.  REFERENCES
  6556.  
  6557. INTRODUCTORY REFERENCES
  6558.  
  6559.  
  6560. [INTRO:1] "Requirements for Internet Hosts -- Application and Support,"
  6561.      IETF Host Requirements Working Group, R. Braden, Ed., RFC-1123,
  6562.      October 1989.
  6563.  
  6564. [INTRO:2]  "Requirements for Internet Gateways,"  R. Braden and J.
  6565.      Postel, RFC-1009, June 1987.
  6566.  
  6567. [INTRO:3]  "DDN Protocol Handbook," NIC-50004, NIC-50005, NIC-50006,
  6568.      (three volumes), SRI International, December 1985.
  6569.  
  6570. [INTRO:4]  "Official Internet Protocols," J. Reynolds and J. Postel,
  6571.      RFC-1011, May 1987.
  6572.  
  6573.      This document is republished periodically with new RFC numbers; the
  6574.      latest version must be used.
  6575.  
  6576. [INTRO:5]  "Protocol Document Order Information," O. Jacobsen and J.
  6577.      Postel, RFC-980, March 1986.
  6578.  
  6579. [INTRO:6]  "Assigned Numbers," J. Reynolds and J. Postel, RFC-1010, May
  6580.      1987.
  6581.  
  6582.      This document is republished periodically with new RFC numbers; the
  6583.      latest version must be used.
  6584.  
  6585. [INTRO:7] "Modularity and Efficiency in Protocol Implementations," D.
  6586.      Clark, RFC-817, July 1982.
  6587.  
  6588. [INTRO:8] "The Structuring of Systems Using Upcalls," D. Clark, 10th ACM
  6589.      SOSP, Orcas Island, Washington, December 1985.
  6590.  
  6591.  
  6592. Secondary References:
  6593.  
  6594.  
  6595. [INTRO:9]  "A Protocol for Packet Network Intercommunication," V. Cerf
  6596.      and R. Kahn, IEEE Transactions on Communication, May 1974.
  6597.  
  6598. [INTRO:10]  "The ARPA Internet Protocol," J. Postel, C. Sunshine, and D.
  6599.      Cohen, Computer Networks, Vol. 5, No. 4, July 1981.
  6600.  
  6601. [INTRO:11]  "The DARPA Internet Protocol Suite," B. Leiner, J. Postel,
  6602.      R. Cole and D. Mills, Proceedings INFOCOM 85, IEEE, Washington DC,
  6603.  
  6604.  
  6605.  
  6606. Internet Engineering Task Force                               [Page 112]
  6607.  
  6608.  
  6609.  
  6610.  
  6611. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6612.  
  6613.  
  6614.      March 1985.  Also in: IEEE Communications Magazine, March 1985.
  6615.      Also available as ISI-RS-85-153.
  6616.  
  6617. [INTRO:12] "Final Text of DIS8473, Protocol for Providing the
  6618.      Connectionless Mode Network Service," ANSI, published as RFC-994,
  6619.      March 1986.
  6620.  
  6621. [INTRO:13] "End System to Intermediate System Routing Exchange
  6622.      Protocol," ANSI X3S3.3, published as RFC-995, April 1986.
  6623.  
  6624.  
  6625. LINK LAYER REFERENCES
  6626.  
  6627.  
  6628. [LINK:1] "Trailer Encapsulations," S. Leffler and M. Karels, RFC-893,
  6629.      April 1984.
  6630.  
  6631. [LINK:2] "An Ethernet Address Resolution Protocol," D. Plummer, RFC-826,
  6632.      November 1982.
  6633.  
  6634. [LINK:3] "A Standard for the Transmission of IP Datagrams over Ethernet
  6635.      Networks," C. Hornig, RFC-894, April 1984.
  6636.  
  6637. [LINK:4] "A Standard for the Transmission of IP Datagrams over IEEE 802
  6638.      "Networks," J. Postel and J. Reynolds, RFC-1042, February 1988.
  6639.  
  6640.      This RFC contains a great deal of information of importance to
  6641.      Internet implementers planning to use IEEE 802 networks.
  6642.  
  6643.  
  6644. IP LAYER REFERENCES
  6645.  
  6646.  
  6647. [IP:1] "Internet Protocol (IP)," J. Postel, RFC-791, September 1981.
  6648.  
  6649. [IP:2] "Internet Control Message Protocol (ICMP)," J. Postel, RFC-792,
  6650.      September 1981.
  6651.  
  6652. [IP:3] "Internet Standard Subnetting Procedure," J. Mogul and J. Postel,
  6653.      RFC-950, August 1985.
  6654.  
  6655. [IP:4]  "Host Extensions for IP Multicasting," S. Deering, RFC-1112,
  6656.      August 1989.
  6657.  
  6658. [IP:5] "Military Standard Internet Protocol," MIL-STD-1777, Department
  6659.      of Defense, August 1983.
  6660.  
  6661.      This specification, as amended by RFC-963, is intended to describe
  6662.  
  6663.  
  6664.  
  6665. Internet Engineering Task Force                               [Page 113]
  6666.  
  6667.  
  6668.  
  6669.  
  6670. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6671.  
  6672.  
  6673.      the Internet Protocol but has some serious omissions (e.g., the
  6674.      mandatory subnet extension [IP:3] and the optional multicasting
  6675.      extension [IP:4]).  It is also out of date.  If there is a
  6676.      conflict, RFC-791, RFC-792, and RFC-950 must be taken as
  6677.      authoritative, while the present document is authoritative over
  6678.      all.
  6679.  
  6680. [IP:6] "Some Problems with the Specification of the Military Standard
  6681.      Internet Protocol," D. Sidhu, RFC-963, November 1985.
  6682.  
  6683. [IP:7] "The TCP Maximum Segment Size and Related Topics," J. Postel,
  6684.      RFC-879, November 1983.
  6685.  
  6686.      Discusses and clarifies the relationship between the TCP Maximum
  6687.      Segment Size option and the IP datagram size.
  6688.  
  6689. [IP:8] "Internet Protocol Security Options,"  B. Schofield, RFC-1108,
  6690.      October 1989.
  6691.  
  6692. [IP:9] "Fragmentation Considered Harmful," C. Kent and J. Mogul, ACM
  6693.      SIGCOMM-87, August 1987.  Published as ACM Comp Comm Review, Vol.
  6694.      17, no. 5.
  6695.  
  6696.      This useful paper discusses the problems created by Internet
  6697.      fragmentation and presents alternative solutions.
  6698.  
  6699. [IP:10] "IP Datagram Reassembly Algorithms," D. Clark, RFC-815, July
  6700.      1982.
  6701.  
  6702.      This and the following paper should be read by every implementor.
  6703.  
  6704. [IP:11] "Fault Isolation and Recovery," D. Clark, RFC-816, July 1982.
  6705.  
  6706. SECONDARY IP REFERENCES:
  6707.  
  6708.  
  6709. [IP:12] "Broadcasting Internet Datagrams in the Presence of Subnets," J.
  6710.      Mogul, RFC-922, October 1984.
  6711.  
  6712. [IP:13] "Name, Addresses, Ports, and Routes," D. Clark, RFC-814, July
  6713.      1982.
  6714.  
  6715. [IP:14] "Something a Host Could Do with Source Quench: The Source Quench
  6716.      Introduced Delay (SQUID)," W. Prue and J. Postel, RFC-1016, July
  6717.      1987.
  6718.  
  6719.      This RFC first described directed broadcast addresses.  However,
  6720.      the bulk of the RFC is concerned with gateways, not hosts.
  6721.  
  6722.  
  6723.  
  6724. Internet Engineering Task Force                               [Page 114]
  6725.  
  6726.  
  6727.  
  6728.  
  6729. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6730.  
  6731.  
  6732. UDP REFERENCES:
  6733.  
  6734.  
  6735. [UDP:1] "User Datagram Protocol," J. Postel, RFC-768, August 1980.
  6736.  
  6737.  
  6738. TCP REFERENCES:
  6739.  
  6740.  
  6741. [TCP:1] "Transmission Control Protocol," J. Postel, RFC-793, September
  6742.      1981.
  6743.  
  6744.  
  6745. [TCP:2] "Transmission Control Protocol," MIL-STD-1778, US Department of
  6746.      Defense, August 1984.
  6747.  
  6748.      This specification as amended by RFC-964 is intended to describe
  6749.      the same protocol as RFC-793 [TCP:1].  If there is a conflict,
  6750.      RFC-793 takes precedence, and the present document is authoritative
  6751.      over both.
  6752.  
  6753.  
  6754. [TCP:3] "Some Problems with the Specification of the Military Standard
  6755.      Transmission Control Protocol," D. Sidhu and T. Blumer, RFC-964,
  6756.      November 1985.
  6757.  
  6758.  
  6759. [TCP:4] "The TCP Maximum Segment Size and Related Topics," J. Postel,
  6760.      RFC-879, November 1983.
  6761.  
  6762.  
  6763. [TCP:5] "Window and Acknowledgment Strategy in TCP," D. Clark, RFC-813,
  6764.      July 1982.
  6765.  
  6766.  
  6767. [TCP:6] "Round Trip Time Estimation," P. Karn & C. Partridge, ACM
  6768.      SIGCOMM-87, August 1987.
  6769.  
  6770.  
  6771. [TCP:7] "Congestion Avoidance and Control," V. Jacobson, ACM SIGCOMM-88,
  6772.      August 1988.
  6773.  
  6774.  
  6775. SECONDARY TCP REFERENCES:
  6776.  
  6777.  
  6778. [TCP:8] "Modularity and Efficiency in Protocol Implementation," D.
  6779.      Clark, RFC-817, July 1982.
  6780.  
  6781.  
  6782.  
  6783. Internet Engineering Task Force                               [Page 115]
  6784.  
  6785.  
  6786.  
  6787.  
  6788. RFC1122                  TRANSPORT LAYER -- TCP             October 1989
  6789.  
  6790.  
  6791. [TCP:9] "Congestion Control in IP/TCP," J. Nagle, RFC-896, January 1984.
  6792.  
  6793.  
  6794. [TCP:10] "Computing the Internet Checksum," R. Braden, D. Borman, and C.
  6795.      Partridge, RFC-1071, September 1988.
  6796.  
  6797.  
  6798. [TCP:11] "TCP Extensions for Long-Delay Paths," V. Jacobson & R. Braden,
  6799.      RFC-1072, October 1988.
  6800.  
  6801.  
  6802. Security Considerations
  6803.  
  6804.    There are many security issues in the communication layers of host
  6805.    software, but a full discussion is beyond the scope of this RFC.
  6806.  
  6807.    The Internet architecture generally provides little protection
  6808.    against spoofing of IP source addresses, so any security mechanism
  6809.    that is based upon verifying the IP source address of a datagram
  6810.    should be treated with suspicion.  However, in restricted
  6811.    environments some source-address checking may be possible.  For
  6812.    example, there might be a secure LAN whose gateway to the rest of the
  6813.    Internet discarded any incoming datagram with a source address that
  6814.    spoofed the LAN address.  In this case, a host on the LAN could use
  6815.    the source address to test for local vs. remote source.  This problem
  6816.    is complicated by source routing, and some have suggested that
  6817.    source-routed datagram forwarding by hosts (see Section 3.3.5) should
  6818.    be outlawed for security reasons.
  6819.  
  6820.    Security-related issues are mentioned in sections concerning the IP
  6821.    Security option (Section 3.2.1.8), the ICMP Parameter Problem message
  6822.    (Section 3.2.2.5), IP options in UDP datagrams (Section 4.1.3.2), and
  6823.    reserved TCP ports (Section 4.2.2.1).
  6824.  
  6825. Author's Address
  6826.  
  6827.    Robert Braden
  6828.    USC/Information Sciences Institute
  6829.    4676 Admiralty Way
  6830.    Marina del Rey, CA 90292-6695
  6831.  
  6832.    Phone: (213) 822 1511
  6833.  
  6834.    EMail: Braden@ISI.EDU
  6835.  
  6836.  
  6837.  
  6838.  
  6839.  
  6840.  
  6841.  
  6842. Internet Engineering Task Force                               [Page 116]
  6843.  
  6844. ========================================================================
  6845.  
  6846.  
  6847.  
  6848.  
  6849. Network Working Group                    Internet Engineering Task Force
  6850. Request for Comments: 1123                             R. Braden, Editor
  6851.                                                             October 1989
  6852.  
  6853.  
  6854.        Requirements for Internet Hosts -- Application and Support
  6855.  
  6856. Status of This Memo
  6857.  
  6858.    This RFC is an official specification for the Internet community.  It
  6859.    incorporates by reference, amends, corrects, and supplements the
  6860.    primary protocol standards documents relating to hosts.  Distribution
  6861.    of this document is unlimited.
  6862.  
  6863. Summary
  6864.  
  6865.    This RFC is one of a pair that defines and discusses the requirements
  6866.    for Internet host software.  This RFC covers the application and
  6867.    support protocols; its companion RFC-1122 covers the communication
  6868.    protocol layers: link layer, IP layer, and transport layer.
  6869.  
  6870.  
  6871.  
  6872.                            Table of Contents
  6873.  
  6874.  
  6875.  
  6876.  
  6877.    1.  INTRODUCTION ...............................................    5
  6878.       1.1  The Internet Architecture ..............................    6
  6879.       1.2  General Considerations .................................    6
  6880.          1.2.1  Continuing Internet Evolution .....................    6
  6881.          1.2.2  Robustness Principle ..............................    7
  6882.          1.2.3  Error Logging .....................................    8
  6883.          1.2.4  Configuration .....................................    8
  6884.       1.3  Reading this Document ..................................   10
  6885.          1.3.1  Organization ......................................   10
  6886.          1.3.2  Requirements ......................................   10
  6887.          1.3.3  Terminology .......................................   11
  6888.       1.4  Acknowledgments ........................................   12
  6889.  
  6890.    2.  GENERAL ISSUES .............................................   13
  6891.       2.1  Host Names and Numbers .................................   13
  6892.       2.2  Using Domain Name Service ..............................   13
  6893.       2.3  Applications on Multihomed hosts .......................   14
  6894.       2.4  Type-of-Service ........................................   14
  6895.       2.5  GENERAL APPLICATION REQUIREMENTS SUMMARY ...............   15
  6896.  
  6897.  
  6898.  
  6899.  
  6900. Internet Engineering Task Force                                 [Page 1]
  6901.  
  6902.  
  6903.  
  6904.  
  6905. RFC1123                       INTRODUCTION                  October 1989
  6906.  
  6907.  
  6908.    3.  REMOTE LOGIN -- TELNET PROTOCOL ............................   16
  6909.       3.1  INTRODUCTION ...........................................   16
  6910.       3.2  PROTOCOL WALK-THROUGH ..................................   16
  6911.          3.2.1  Option Negotiation ................................   16
  6912.          3.2.2  Telnet Go-Ahead Function ..........................   16
  6913.          3.2.3  Control Functions .................................   17
  6914.          3.2.4  Telnet "Synch" Signal .............................   18
  6915.          3.2.5  NVT Printer and Keyboard ..........................   19
  6916.          3.2.6  Telnet Command Structure ..........................   20
  6917.          3.2.7  Telnet Binary Option ..............................   20
  6918.          3.2.8  Telnet Terminal-Type Option .......................   20
  6919.       3.3  SPECIFIC ISSUES ........................................   21
  6920.          3.3.1  Telnet End-of-Line Convention .....................   21
  6921.          3.3.2  Data Entry Terminals ..............................   23
  6922.          3.3.3  Option Requirements ...............................   24
  6923.          3.3.4  Option Initiation .................................   24
  6924.          3.3.5  Telnet Linemode Option ............................   25
  6925.       3.4  TELNET/USER INTERFACE ..................................   25
  6926.          3.4.1  Character Set Transparency ........................   25
  6927.          3.4.2  Telnet Commands ...................................   26
  6928.          3.4.3  TCP Connection Errors .............................   26
  6929.          3.4.4  Non-Default Telnet Contact Port ...................   26
  6930.          3.4.5  Flushing Output ...................................   26
  6931.       3.5.  TELNET REQUIREMENTS SUMMARY ...........................   27
  6932.  
  6933.    4.  FILE TRANSFER ..............................................   29
  6934.       4.1  FILE TRANSFER PROTOCOL -- FTP ..........................   29
  6935.          4.1.1  INTRODUCTION ......................................   29
  6936.          4.1.2.  PROTOCOL WALK-THROUGH ............................   29
  6937.             4.1.2.1  LOCAL Type ...................................   29
  6938.             4.1.2.2  Telnet Format Control ........................   30
  6939.             4.1.2.3  Page Structure ...............................   30
  6940.             4.1.2.4  Data Structure Transformations ...............   30
  6941.             4.1.2.5  Data Connection Management ...................   31
  6942.             4.1.2.6  PASV Command .................................   31
  6943.             4.1.2.7  LIST and NLST Commands .......................   31
  6944.             4.1.2.8  SITE Command .................................   32
  6945.             4.1.2.9  STOU Command .................................   32
  6946.             4.1.2.10  Telnet End-of-line Code .....................   32
  6947.             4.1.2.11  FTP Replies .................................   33
  6948.             4.1.2.12  Connections .................................   34
  6949.             4.1.2.13  Minimum Implementation; RFC-959 Section .....   34
  6950.          4.1.3  SPECIFIC ISSUES ...................................   35
  6951.             4.1.3.1  Non-standard Command Verbs ...................   35
  6952.             4.1.3.2  Idle Timeout .................................   36
  6953.             4.1.3.3  Concurrency of Data and Control ..............   36
  6954.             4.1.3.4  FTP Restart Mechanism ........................   36
  6955.          4.1.4  FTP/USER INTERFACE ................................   39
  6956.  
  6957.  
  6958.  
  6959. Internet Engineering Task Force                                 [Page 2]
  6960.  
  6961.  
  6962.  
  6963.  
  6964. RFC1123                       INTRODUCTION                  October 1989
  6965.  
  6966.  
  6967.             4.1.4.1  Pathname Specification .......................   39
  6968.             4.1.4.2  "QUOTE" Command ..............................   40
  6969.             4.1.4.3  Displaying Replies to User ...................   40
  6970.             4.1.4.4  Maintaining Synchronization ..................   40
  6971.          4.1.5   FTP REQUIREMENTS SUMMARY .........................   41
  6972.       4.2  TRIVIAL FILE TRANSFER PROTOCOL -- TFTP .................   44
  6973.          4.2.1  INTRODUCTION ......................................   44
  6974.          4.2.2  PROTOCOL WALK-THROUGH .............................   44
  6975.             4.2.2.1  Transfer Modes ...............................   44
  6976.             4.2.2.2  UDP Header ...................................   44
  6977.          4.2.3  SPECIFIC ISSUES ...................................   44
  6978.             4.2.3.1  Sorcerer's Apprentice Syndrome ...............   44
  6979.             4.2.3.2  Timeout Algorithms ...........................   46
  6980.             4.2.3.3  Extensions ...................................   46
  6981.             4.2.3.4  Access Control ...............................   46
  6982.             4.2.3.5  Broadcast Request ............................   46
  6983.          4.2.4  TFTP REQUIREMENTS SUMMARY .........................   47
  6984.  
  6985.    5.  ELECTRONIC MAIL -- SMTP and RFC-822 ........................   48
  6986.       5.1  INTRODUCTION ...........................................   48
  6987.       5.2  PROTOCOL WALK-THROUGH ..................................   48
  6988.          5.2.1  The SMTP Model ....................................   48
  6989.          5.2.2  Canonicalization ..................................   49
  6990.          5.2.3  VRFY and EXPN Commands ............................   50
  6991.          5.2.4  SEND, SOML, and SAML Commands .....................   50
  6992.          5.2.5  HELO Command ......................................   50
  6993.          5.2.6  Mail Relay ........................................   51
  6994.          5.2.7  RCPT Command ......................................   52
  6995.          5.2.8  DATA Command ......................................   53
  6996.          5.2.9  Command Syntax ....................................   54
  6997.          5.2.10  SMTP Replies .....................................   54
  6998.          5.2.11  Transparency .....................................   55
  6999.          5.2.12  WKS Use in MX Processing .........................   55
  7000.          5.2.13  RFC-822 Message Specification ....................   55
  7001.          5.2.14  RFC-822 Date and Time Specification ..............   55
  7002.          5.2.15  RFC-822 Syntax Change ............................   56
  7003.          5.2.16  RFC-822  Local-part ..............................   56
  7004.          5.2.17  Domain Literals ..................................   57
  7005.          5.2.18  Common Address Formatting Errors .................   58
  7006.          5.2.19  Explicit Source Routes ...........................   58
  7007.       5.3  SPECIFIC ISSUES ........................................   59
  7008.          5.3.1  SMTP Queueing Strategies ..........................   59
  7009.             5.3.1.1 Sending Strategy ..............................   59
  7010.             5.3.1.2  Receiving strategy ...........................   61
  7011.          5.3.2  Timeouts in SMTP ..................................   61
  7012.          5.3.3  Reliable Mail Receipt .............................   63
  7013.          5.3.4  Reliable Mail Transmission ........................   63
  7014.          5.3.5  Domain Name Support ...............................   65
  7015.  
  7016.  
  7017.  
  7018. Internet Engineering Task Force                                 [Page 3]
  7019.  
  7020.  
  7021.  
  7022.  
  7023. RFC1123                       INTRODUCTION                  October 1989
  7024.  
  7025.  
  7026.          5.3.6  Mailing Lists and Aliases .........................   65
  7027.          5.3.7  Mail Gatewaying ...................................   66
  7028.          5.3.8  Maximum Message Size ..............................   68
  7029.       5.4  SMTP REQUIREMENTS SUMMARY ..............................   69
  7030.  
  7031.    6. SUPPORT SERVICES ............................................   72
  7032.       6.1 DOMAIN NAME TRANSLATION .................................   72
  7033.          6.1.1 INTRODUCTION .......................................   72
  7034.          6.1.2  PROTOCOL WALK-THROUGH .............................   72
  7035.             6.1.2.1  Resource Records with Zero TTL ...............   73
  7036.             6.1.2.2  QCLASS Values ................................   73
  7037.             6.1.2.3  Unused Fields ................................   73
  7038.             6.1.2.4  Compression ..................................   73
  7039.             6.1.2.5  Misusing Configuration Info ..................   73
  7040.          6.1.3  SPECIFIC ISSUES ...................................   74
  7041.             6.1.3.1  Resolver Implementation ......................   74
  7042.             6.1.3.2  Transport Protocols ..........................   75
  7043.             6.1.3.3  Efficient Resource Usage .....................   77
  7044.             6.1.3.4  Multihomed Hosts .............................   78
  7045.             6.1.3.5  Extensibility ................................   79
  7046.             6.1.3.6  Status of RR Types ...........................   79
  7047.             6.1.3.7  Robustness ...................................   80
  7048.             6.1.3.8  Local Host Table .............................   80
  7049.          6.1.4  DNS USER INTERFACE ................................   81
  7050.             6.1.4.1  DNS Administration ...........................   81
  7051.             6.1.4.2  DNS User Interface ...........................   81
  7052.             6.1.4.3 Interface Abbreviation Facilities .............   82
  7053.          6.1.5  DOMAIN NAME SYSTEM REQUIREMENTS SUMMARY ...........   84
  7054.       6.2  HOST INITIALIZATION ....................................   87
  7055.          6.2.1  INTRODUCTION ......................................   87
  7056.          6.2.2  REQUIREMENTS ......................................   87
  7057.             6.2.2.1  Dynamic Configuration ........................   87
  7058.             6.2.2.2  Loading Phase ................................   89
  7059.       6.3  REMOTE MANAGEMENT ......................................   90
  7060.          6.3.1  INTRODUCTION ......................................   90
  7061.          6.3.2  PROTOCOL WALK-THROUGH .............................   90
  7062.          6.3.3  MANAGEMENT REQUIREMENTS SUMMARY ...................   92
  7063.  
  7064.    7.  REFERENCES .................................................   93
  7065.  
  7066.  
  7067.  
  7068.  
  7069.  
  7070.  
  7071.  
  7072.  
  7073.  
  7074.  
  7075.  
  7076.  
  7077. Internet Engineering Task Force                                 [Page 4]
  7078.  
  7079.  
  7080.  
  7081.  
  7082. RFC1123                       INTRODUCTION                  October 1989
  7083.  
  7084.  
  7085. 1.  INTRODUCTION
  7086.  
  7087.    This document is one of a pair that defines and discusses the
  7088.    requirements for host system implementations of the Internet protocol
  7089.    suite.  This RFC covers the applications layer and support protocols.
  7090.    Its companion RFC, "Requirements for Internet Hosts -- Communications
  7091.    Layers" [INTRO:1] covers the lower layer protocols: transport layer,
  7092.    IP layer, and link layer.
  7093.  
  7094.    These documents are intended to provide guidance for vendors,
  7095.    implementors, and users of Internet communication software.  They
  7096.    represent the consensus of a large body of technical experience and
  7097.    wisdom, contributed by members of the Internet research and vendor
  7098.    communities.
  7099.  
  7100.    This RFC enumerates standard protocols that a host connected to the
  7101.    Internet must use, and it incorporates by reference the RFCs and
  7102.    other documents describing the current specifications for these
  7103.    protocols.  It corrects errors in the referenced documents and adds
  7104.    additional discussion and guidance for an implementor.
  7105.  
  7106.    For each protocol, this document also contains an explicit set of
  7107.    requirements, recommendations, and options.  The reader must
  7108.    understand that the list of requirements in this document is
  7109.    incomplete by itself; the complete set of requirements for an
  7110.    Internet host is primarily defined in the standard protocol
  7111.    specification documents, with the corrections, amendments, and
  7112.    supplements contained in this RFC.
  7113.  
  7114.    A good-faith implementation of the protocols that was produced after
  7115.    careful reading of the RFC's and with some interaction with the
  7116.    Internet technical community, and that followed good communications
  7117.    software engineering practices, should differ from the requirements
  7118.    of this document in only minor ways.  Thus, in many cases, the
  7119.    "requirements" in this RFC are already stated or implied in the
  7120.    standard protocol documents, so that their inclusion here is, in a
  7121.    sense, redundant.  However, they were included because some past
  7122.    implementation has made the wrong choice, causing problems of
  7123.    interoperability, performance, and/or robustness.
  7124.  
  7125.    This document includes discussion and explanation of many of the
  7126.    requirements and recommendations.  A simple list of requirements
  7127.    would be dangerous, because:
  7128.  
  7129.    o    Some required features are more important than others, and some
  7130.         features are optional.
  7131.  
  7132.    o    There may be valid reasons why particular vendor products that
  7133.  
  7134.  
  7135.  
  7136. Internet Engineering Task Force                                 [Page 5]
  7137.  
  7138.  
  7139.  
  7140.  
  7141. RFC1123                       INTRODUCTION                  October 1989
  7142.  
  7143.  
  7144.         are designed for restricted contexts might choose to use
  7145.         different specifications.
  7146.  
  7147.    However, the specifications of this document must be followed to meet
  7148.    the general goal of arbitrary host interoperation across the
  7149.    diversity and complexity of the Internet system.  Although most
  7150.    current implementations fail to meet these requirements in various
  7151.    ways, some minor and some major, this specification is the ideal
  7152.    towards which we need to move.
  7153.  
  7154.    These requirements are based on the current level of Internet
  7155.    architecture.  This document will be updated as required to provide
  7156.    additional clarifications or to include additional information in
  7157.    those areas in which specifications are still evolving.
  7158.  
  7159.    This introductory section begins with general advice to host software
  7160.    vendors, and then gives some guidance on reading the rest of the
  7161.    document.  Section 2 contains general requirements that may be
  7162.    applicable to all application and support protocols.  Sections 3, 4,
  7163.    and 5 contain the requirements on protocols for the three major
  7164.    applications: Telnet, file transfer, and electronic mail,
  7165.    respectively. Section 6 covers the support applications: the domain
  7166.    name system, system initialization, and management.  Finally, all
  7167.    references will be found in Section 7.
  7168.  
  7169.    1.1  The Internet Architecture
  7170.  
  7171.       For a brief introduction to the Internet architecture from a host
  7172.       viewpoint, see Section 1.1 of [INTRO:1].  That section also
  7173.       contains recommended references for general background on the
  7174.       Internet architecture.
  7175.  
  7176.    1.2  General Considerations
  7177.  
  7178.       There are two important lessons that vendors of Internet host
  7179.       software have learned and which a new vendor should consider
  7180.       seriously.
  7181.  
  7182.       1.2.1  Continuing Internet Evolution
  7183.  
  7184.          The enormous growth of the Internet has revealed problems of
  7185.          management and scaling in a large datagram-based packet
  7186.          communication system.  These problems are being addressed, and
  7187.          as a result there will be continuing evolution of the
  7188.          specifications described in this document.  These changes will
  7189.          be carefully planned and controlled, since there is extensive
  7190.          participation in this planning by the vendors and by the
  7191.          organizations responsible for operations of the networks.
  7192.  
  7193.  
  7194.  
  7195. Internet Engineering Task Force                                 [Page 6]
  7196.  
  7197.  
  7198.  
  7199.  
  7200. RFC1123                       INTRODUCTION                  October 1989
  7201.  
  7202.  
  7203.          Development, evolution, and revision are characteristic of
  7204.          computer network protocols today, and this situation will
  7205.          persist for some years.  A vendor who develops computer
  7206.          communication software for the Internet protocol suite (or any
  7207.          other protocol suite!) and then fails to maintain and update
  7208.          that software for changing specifications is going to leave a
  7209.          trail of unhappy customers.  The Internet is a large
  7210.          communication network, and the users are in constant contact
  7211.          through it.  Experience has shown that knowledge of
  7212.          deficiencies in vendor software propagates quickly through the
  7213.          Internet technical community.
  7214.  
  7215.       1.2.2  Robustness Principle
  7216.  
  7217.          At every layer of the protocols, there is a general rule whose
  7218.          application can lead to enormous benefits in robustness and
  7219.          interoperability:
  7220.  
  7221.                 "Be liberal in what you accept, and
  7222.                  conservative in what you send"
  7223.  
  7224.          Software should be written to deal with every conceivable
  7225.          error, no matter how unlikely; sooner or later a packet will
  7226.          come in with that particular combination of errors and
  7227.          attributes, and unless the software is prepared, chaos can
  7228.          ensue.  In general, it is best to assume that the network is
  7229.          filled with malevolent entities that will send in packets
  7230.          designed to have the worst possible effect.  This assumption
  7231.          will lead to suitable protective design, although the most
  7232.          serious problems in the Internet have been caused by
  7233.          unenvisaged mechanisms triggered by low-probability events;
  7234.          mere human malice would never have taken so devious a course!
  7235.  
  7236.          Adaptability to change must be designed into all levels of
  7237.          Internet host software.  As a simple example, consider a
  7238.          protocol specification that contains an enumeration of values
  7239.          for a particular header field -- e.g., a type field, a port
  7240.          number, or an error code; this enumeration must be assumed to
  7241.          be incomplete.  Thus, if a protocol specification defines four
  7242.          possible error codes, the software must not break when a fifth
  7243.          code shows up.  An undefined code might be logged (see below),
  7244.          but it must not cause a failure.
  7245.  
  7246.          The second part of the principle is almost as important:
  7247.          software on other hosts may contain deficiencies that make it
  7248.          unwise to exploit legal but obscure protocol features.  It is
  7249.          unwise to stray far from the obvious and simple, lest untoward
  7250.          effects result elsewhere.  A corollary of this is "watch out
  7251.  
  7252.  
  7253.  
  7254. Internet Engineering Task Force                                 [Page 7]
  7255.  
  7256.  
  7257.  
  7258.  
  7259. RFC1123                       INTRODUCTION                  October 1989
  7260.  
  7261.  
  7262.          for misbehaving hosts"; host software should be prepared, not
  7263.          just to survive other misbehaving hosts, but also to cooperate
  7264.          to limit the amount of disruption such hosts can cause to the
  7265.          shared communication facility.
  7266.  
  7267.       1.2.3  Error Logging
  7268.  
  7269.          The Internet includes a great variety of host and gateway
  7270.          systems, each implementing many protocols and protocol layers,
  7271.          and some of these contain bugs and mis-features in their
  7272.          Internet protocol software.  As a result of complexity,
  7273.          diversity, and distribution of function, the diagnosis of user
  7274.          problems is often very difficult.
  7275.  
  7276.          Problem diagnosis will be aided if host implementations include
  7277.          a carefully designed facility for logging erroneous or
  7278.          "strange" protocol events.  It is important to include as much
  7279.          diagnostic information as possible when an error is logged.  In
  7280.          particular, it is often useful to record the header(s) of a
  7281.          packet that caused an error.  However, care must be taken to
  7282.          ensure that error logging does not consume prohibitive amounts
  7283.          of resources or otherwise interfere with the operation of the
  7284.          host.
  7285.  
  7286.          There is a tendency for abnormal but harmless protocol events
  7287.          to overflow error logging files; this can be avoided by using a
  7288.          "circular" log, or by enabling logging only while diagnosing a
  7289.          known failure.  It may be useful to filter and count duplicate
  7290.          successive messages.  One strategy that seems to work well is:
  7291.          (1) always count abnormalities and make such counts accessible
  7292.          through the management protocol (see Section 6.3); and (2)
  7293.          allow the logging of a great variety of events to be
  7294.          selectively enabled.  For example, it might useful to be able
  7295.          to "log everything" or to "log everything for host X".
  7296.  
  7297.          Note that different managements may have differing policies
  7298.          about the amount of error logging that they want normally
  7299.          enabled in a host.  Some will say, "if it doesn't hurt me, I
  7300.          don't want to know about it", while others will want to take a
  7301.          more watchful and aggressive attitude about detecting and
  7302.          removing protocol abnormalities.
  7303.  
  7304.       1.2.4  Configuration
  7305.  
  7306.          It would be ideal if a host implementation of the Internet
  7307.          protocol suite could be entirely self-configuring.  This would
  7308.          allow the whole suite to be implemented in ROM or cast into
  7309.          silicon, it would simplify diskless workstations, and it would
  7310.  
  7311.  
  7312.  
  7313. Internet Engineering Task Force                                 [Page 8]
  7314.  
  7315.  
  7316.  
  7317.  
  7318. RFC1123                       INTRODUCTION                  October 1989
  7319.  
  7320.  
  7321.          be an immense boon to harried LAN administrators as well as
  7322.          system vendors.  We have not reached this ideal; in fact, we
  7323.          are not even close.
  7324.  
  7325.          At many points in this document, you will find a requirement
  7326.          that a parameter be a configurable option.  There are several
  7327.          different reasons behind such requirements.  In a few cases,
  7328.          there is current uncertainty or disagreement about the best
  7329.          value, and it may be necessary to update the recommended value
  7330.          in the future.  In other cases, the value really depends on
  7331.          external factors -- e.g., the size of the host and the
  7332.          distribution of its communication load, or the speeds and
  7333.          topology of nearby networks -- and self-tuning algorithms are
  7334.          unavailable and may be insufficient.  In some cases,
  7335.          configurability is needed because of administrative
  7336.          requirements.
  7337.  
  7338.          Finally, some configuration options are required to communicate
  7339.          with obsolete or incorrect implementations of the protocols,
  7340.          distributed without sources, that unfortunately persist in many
  7341.          parts of the Internet.  To make correct systems coexist with
  7342.          these faulty systems, administrators often have to "mis-
  7343.          configure" the correct systems.  This problem will correct
  7344.          itself gradually as the faulty systems are retired, but it
  7345.          cannot be ignored by vendors.
  7346.  
  7347.          When we say that a parameter must be configurable, we do not
  7348.          intend to require that its value be explicitly read from a
  7349.          configuration file at every boot time.  We recommend that
  7350.          implementors set up a default for each parameter, so a
  7351.          configuration file is only necessary to override those defaults
  7352.          that are inappropriate in a particular installation.  Thus, the
  7353.          configurability requirement is an assurance that it will be
  7354.          POSSIBLE to override the default when necessary, even in a
  7355.          binary-only or ROM-based product.
  7356.  
  7357.          This document requires a particular value for such defaults in
  7358.          some cases.  The choice of default is a sensitive issue when
  7359.          the configuration item controls the accommodation to existing
  7360.          faulty systems.  If the Internet is to converge successfully to
  7361.          complete interoperability, the default values built into
  7362.          implementations must implement the official protocol, not
  7363.          "mis-configurations" to accommodate faulty implementations.
  7364.          Although marketing considerations have led some vendors to
  7365.          choose mis-configuration defaults, we urge vendors to choose
  7366.          defaults that will conform to the standard.
  7367.  
  7368.          Finally, we note that a vendor needs to provide adequate
  7369.  
  7370.  
  7371.  
  7372. Internet Engineering Task Force                                 [Page 9]
  7373.  
  7374.  
  7375.  
  7376.  
  7377. RFC1123                       INTRODUCTION                  October 1989
  7378.  
  7379.  
  7380.          documentation on all configuration parameters, their limits and
  7381.          effects.
  7382.  
  7383.  
  7384.    1.3  Reading this Document
  7385.  
  7386.       1.3.1  Organization
  7387.  
  7388.          In general, each major section is organized into the following
  7389.          subsections:
  7390.  
  7391.          (1)  Introduction
  7392.  
  7393.          (2)  Protocol Walk-Through -- considers the protocol
  7394.               specification documents section-by-section, correcting
  7395.               errors, stating requirements that may be ambiguous or
  7396.               ill-defined, and providing further clarification or
  7397.               explanation.
  7398.  
  7399.          (3)  Specific Issues -- discusses protocol design and
  7400.               implementation issues that were not included in the walk-
  7401.               through.
  7402.  
  7403.          (4)  Interfaces -- discusses the service interface to the next
  7404.               higher layer.
  7405.  
  7406.          (5)  Summary -- contains a summary of the requirements of the
  7407.               section.
  7408.  
  7409.          Under many of the individual topics in this document, there is
  7410.          parenthetical material labeled "DISCUSSION" or
  7411.          "IMPLEMENTATION".  This material is intended to give
  7412.          clarification and explanation of the preceding requirements
  7413.          text.  It also includes some suggestions on possible future
  7414.          directions or developments.  The implementation material
  7415.          contains suggested approaches that an implementor may want to
  7416.          consider.
  7417.  
  7418.          The summary sections are intended to be guides and indexes to
  7419.          the text, but are necessarily cryptic and incomplete.  The
  7420.          summaries should never be used or referenced separately from
  7421.          the complete RFC.
  7422.  
  7423.       1.3.2  Requirements
  7424.  
  7425.          In this document, the words that are used to define the
  7426.          significance of each particular requirement are capitalized.
  7427.          These words are:
  7428.  
  7429.  
  7430.  
  7431. Internet Engineering Task Force                                [Page 10]
  7432.  
  7433.  
  7434.  
  7435.  
  7436. RFC1123                       INTRODUCTION                  October 1989
  7437.  
  7438.  
  7439.          *    "MUST"
  7440.  
  7441.               This word or the adjective "REQUIRED" means that the item
  7442.               is an absolute requirement of the specification.
  7443.  
  7444.          *    "SHOULD"
  7445.  
  7446.               This word or the adjective "RECOMMENDED" means that there
  7447.               may exist valid reasons in particular circumstances to
  7448.               ignore this item, but the full implications should be
  7449.               understood and the case carefully weighed before choosing
  7450.               a different course.
  7451.  
  7452.          *    "MAY"
  7453.  
  7454.               This word or the adjective "OPTIONAL" means that this item
  7455.               is truly optional.  One vendor may choose to include the
  7456.               item because a particular marketplace requires it or
  7457.               because it enhances the product, for example; another
  7458.               vendor may omit the same item.
  7459.  
  7460.  
  7461.          An implementation is not compliant if it fails to satisfy one
  7462.          or more of the MUST requirements for the protocols it
  7463.          implements.  An implementation that satisfies all the MUST and
  7464.          all the SHOULD requirements for its protocols is said to be
  7465.          "unconditionally compliant"; one that satisfies all the MUST
  7466.          requirements but not all the SHOULD requirements for its
  7467.          protocols is said to be "conditionally compliant".
  7468.  
  7469.       1.3.3  Terminology
  7470.  
  7471.          This document uses the following technical terms:
  7472.  
  7473.          Segment
  7474.               A segment is the unit of end-to-end transmission in the
  7475.               TCP protocol.  A segment consists of a TCP header followed
  7476.               by application data.  A segment is transmitted by
  7477.               encapsulation in an IP datagram.
  7478.  
  7479.          Message
  7480.               This term is used by some application layer protocols
  7481.               (particularly SMTP) for an application data unit.
  7482.  
  7483.          Datagram
  7484.               A [UDP] datagram is the unit of end-to-end transmission in
  7485.               the UDP protocol.
  7486.  
  7487.  
  7488.  
  7489.  
  7490. Internet Engineering Task Force                                [Page 11]
  7491.  
  7492.  
  7493.  
  7494.  
  7495. RFC1123                       INTRODUCTION                  October 1989
  7496.  
  7497.  
  7498.          Multihomed
  7499.               A host is said to be multihomed if it has multiple IP
  7500.               addresses to connected networks.
  7501.  
  7502.  
  7503.  
  7504.    1.4  Acknowledgments
  7505.  
  7506.       This document incorporates contributions and comments from a large
  7507.       group of Internet protocol experts, including representatives of
  7508.       university and research labs, vendors, and government agencies.
  7509.       It was assembled primarily by the Host Requirements Working Group
  7510.       of the Internet Engineering Task Force (IETF).
  7511.  
  7512.       The Editor would especially like to acknowledge the tireless
  7513.       dedication of the following people, who attended many long
  7514.       meetings and generated 3 million bytes of electronic mail over the
  7515.       past 18 months in pursuit of this document: Philip Almquist, Dave
  7516.       Borman (Cray Research), Noel Chiappa, Dave Crocker (DEC), Steve
  7517.       Deering (Stanford), Mike Karels (Berkeley), Phil Karn (Bellcore),
  7518.       John Lekashman (NASA), Charles Lynn (BBN), Keith McCloghrie (TWG),
  7519.       Paul Mockapetris (ISI), Thomas Narten (Purdue), Craig Partridge
  7520.       (BBN), Drew Perkins (CMU), and James Van Bokkelen (FTP Software).
  7521.  
  7522.       In addition, the following people made major contributions to the
  7523.       effort: Bill Barns (Mitre), Steve Bellovin (AT&T), Mike Brescia
  7524.       (BBN), Ed Cain (DCA), Annette DeSchon (ISI), Martin Gross (DCA),
  7525.       Phill Gross (NRI), Charles Hedrick (Rutgers), Van Jacobson (LBL),
  7526.       John Klensin (MIT), Mark Lottor (SRI), Milo Medin (NASA), Bill
  7527.       Melohn (Sun Microsystems), Greg Minshall (Kinetics), Jeff Mogul
  7528.       (DEC), John Mullen (CMC), Jon Postel (ISI), John Romkey (Epilogue
  7529.       Technology), and Mike StJohns (DCA).  The following also made
  7530.       significant contributions to particular areas: Eric Allman
  7531.       (Berkeley), Rob Austein (MIT), Art Berggreen (ACC), Keith Bostic
  7532.       (Berkeley), Vint Cerf (NRI), Wayne Hathaway (NASA), Matt Korn
  7533.       (IBM), Erik Naggum (Naggum Software, Norway), Robert Ullmann
  7534.       (Prime Computer), David Waitzman (BBN), Frank Wancho (USA), Arun
  7535.       Welch (Ohio State), Bill Westfield (Cisco), and Rayan Zachariassen
  7536.       (Toronto).
  7537.  
  7538.       We are grateful to all, including any contributors who may have
  7539.       been inadvertently omitted from this list.
  7540.  
  7541.  
  7542.  
  7543.  
  7544.  
  7545.  
  7546.  
  7547.  
  7548.  
  7549. Internet Engineering Task Force                                [Page 12]
  7550.  
  7551.  
  7552.  
  7553.  
  7554. RFC1123              APPLICATIONS LAYER -- GENERAL          October 1989
  7555.  
  7556.  
  7557. 2.  GENERAL ISSUES
  7558.  
  7559.    This section contains general requirements that may be applicable to
  7560.    all application-layer protocols.
  7561.  
  7562.    2.1  Host Names and Numbers
  7563.  
  7564.       The syntax of a legal Internet host name was specified in RFC-952
  7565.       [DNS:4].  One aspect of host name syntax is hereby changed: the
  7566.       restriction on the first character is relaxed to allow either a
  7567.       letter or a digit.  Host software MUST support this more liberal
  7568.       syntax.
  7569.  
  7570.       Host software MUST handle host names of up to 63 characters and
  7571.       SHOULD handle host names of up to 255 characters.
  7572.  
  7573.       Whenever a user inputs the identity of an Internet host, it SHOULD
  7574.       be possible to enter either (1) a host domain name or (2) an IP
  7575.       address in dotted-decimal ("#.#.#.#") form.  The host SHOULD check
  7576.       the string syntactically for a dotted-decimal number before
  7577.       looking it up in the Domain Name System.
  7578.  
  7579.       DISCUSSION:
  7580.            This last requirement is not intended to specify the complete
  7581.            syntactic form for entering a dotted-decimal host number;
  7582.            that is considered to be a user-interface issue.  For
  7583.            example, a dotted-decimal number must be enclosed within
  7584.            "[ ]" brackets for SMTP mail (see Section 5.2.17).  This
  7585.            notation could be made universal within a host system,
  7586.            simplifying the syntactic checking for a dotted-decimal
  7587.            number.
  7588.  
  7589.            If a dotted-decimal number can be entered without such
  7590.            identifying delimiters, then a full syntactic check must be
  7591.            made, because a segment of a host domain name is now allowed
  7592.            to begin with a digit and could legally be entirely numeric
  7593.            (see Section 6.1.2.4).  However, a valid host name can never
  7594.            have the dotted-decimal form #.#.#.#, since at least the
  7595.            highest-level component label will be alphabetic.
  7596.  
  7597.    2.2  Using Domain Name Service
  7598.  
  7599.       Host domain names MUST be translated to IP addresses as described
  7600.       in Section 6.1.
  7601.  
  7602.       Applications using domain name services MUST be able to cope with
  7603.       soft error conditions.  Applications MUST wait a reasonable
  7604.       interval between successive retries due to a soft error, and MUST
  7605.  
  7606.  
  7607.  
  7608. Internet Engineering Task Force                                [Page 13]
  7609.  
  7610.  
  7611.  
  7612.  
  7613. RFC1123              APPLICATIONS LAYER -- GENERAL          October 1989
  7614.  
  7615.  
  7616.       allow for the possibility that network problems may deny service
  7617.       for hours or even days.
  7618.  
  7619.       An application SHOULD NOT rely on the ability to locate a WKS
  7620.       record containing an accurate listing of all services at a
  7621.       particular host address, since the WKS RR type is not often used
  7622.       by Internet sites.  To confirm that a service is present, simply
  7623.       attempt to use it.
  7624.  
  7625.    2.3  Applications on Multihomed hosts
  7626.  
  7627.       When the remote host is multihomed, the name-to-address
  7628.       translation will return a list of alternative IP addresses.  As
  7629.       specified in Section 6.1.3.4, this list should be in order of
  7630.       decreasing preference.  Application protocol implementations
  7631.       SHOULD be prepared to try multiple addresses from the list until
  7632.       success is obtained.  More specific requirements for SMTP are
  7633.       given in Section 5.3.4.
  7634.  
  7635.       When the local host is multihomed, a UDP-based request/response
  7636.       application SHOULD send the response with an IP source address
  7637.       that is the same as the specific destination address of the UDP
  7638.       request datagram.  The "specific destination address" is defined
  7639.       in the "IP Addressing" section of the companion RFC [INTRO:1].
  7640.  
  7641.       Similarly, a server application that opens multiple TCP
  7642.       connections to the same client SHOULD use the same local IP
  7643.       address for all.
  7644.  
  7645.    2.4  Type-of-Service
  7646.  
  7647.       Applications MUST select appropriate TOS values when they invoke
  7648.       transport layer services, and these values MUST be configurable.
  7649.       Note that a TOS value contains 5 bits, of which only the most-
  7650.       significant 3 bits are currently defined; the other two bits MUST
  7651.       be zero.
  7652.  
  7653.       DISCUSSION:
  7654.            As gateway algorithms are developed to implement Type-of-
  7655.            Service, the recommended values for various application
  7656.            protocols may change.  In addition, it is likely that
  7657.            particular combinations of users and Internet paths will want
  7658.            non-standard TOS values.  For these reasons, the TOS values
  7659.            must be configurable.
  7660.  
  7661.            See the latest version of the "Assigned Numbers" RFC
  7662.            [INTRO:5] for the recommended TOS values for the major
  7663.            application protocols.
  7664.  
  7665.  
  7666.  
  7667. Internet Engineering Task Force                                [Page 14]
  7668.  
  7669.  
  7670.  
  7671.  
  7672. RFC1123              APPLICATIONS LAYER -- GENERAL          October 1989
  7673.  
  7674.  
  7675.    2.5  GENERAL APPLICATION REQUIREMENTS SUMMARY
  7676.  
  7677.                                                |          | | | |S| |
  7678.                                                |          | | | |H| |F
  7679.                                                |          | | | |O|M|o
  7680.                                                |          | |S| |U|U|o
  7681.                                                |          | |H| |L|S|t
  7682.                                                |          |M|O| |D|T|n
  7683.                                                |          |U|U|M| | |o
  7684.                                                |          |S|L|A|N|N|t
  7685.                                                |          |T|D|Y|O|O|t
  7686. FEATURE                                        |SECTION   | | | |T|T|e
  7687. -----------------------------------------------|----------|-|-|-|-|-|--
  7688.                                                |          | | | | | |
  7689. User interfaces:                               |          | | | | | |
  7690.   Allow host name to begin with digit          |2.1       |x| | | | |
  7691.   Host names of up to 635 characters           |2.1       |x| | | | |
  7692.   Host names of up to 255 characters           |2.1       | |x| | | |
  7693.   Support dotted-decimal host numbers          |2.1       | |x| | | |
  7694.   Check syntactically for dotted-dec first     |2.1       | |x| | | |
  7695.                                                |          | | | | | |
  7696. Map domain names per Section 6.1               |2.2       |x| | | | |
  7697. Cope with soft DNS errors                      |2.2       |x| | | | |
  7698.    Reasonable interval between retries         |2.2       |x| | | | |
  7699.    Allow for long outages                      |2.2       |x| | | | |
  7700. Expect WKS records to be available             |2.2       | | | |x| |
  7701.                                                |          | | | | | |
  7702. Try multiple addr's for remote multihomed host |2.3       | |x| | | |
  7703. UDP reply src addr is specific dest of request |2.3       | |x| | | |
  7704. Use same IP addr for related TCP connections   |2.3       | |x| | | |
  7705. Specify appropriate TOS values                 |2.4       |x| | | | |
  7706.   TOS values configurable                      |2.4       |x| | | | |
  7707.   Unused TOS bits zero                         |2.4       |x| | | | |
  7708.                                                |          | | | | | |
  7709.                                                |          | | | | | |
  7710.  
  7711.  
  7712.  
  7713.  
  7714.  
  7715.  
  7716.  
  7717.  
  7718.  
  7719.  
  7720.  
  7721.  
  7722.  
  7723.  
  7724.  
  7725.  
  7726. Internet Engineering Task Force                                [Page 15]
  7727.  
  7728.  
  7729.  
  7730.  
  7731. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  7732.  
  7733.  
  7734. 3.  REMOTE LOGIN -- TELNET PROTOCOL
  7735.  
  7736.    3.1  INTRODUCTION
  7737.  
  7738.       Telnet is the standard Internet application protocol for remote
  7739.       login.  It provides the encoding rules to link a user's
  7740.       keyboard/display on a client ("user") system with a command
  7741.       interpreter on a remote server system.  A subset of the Telnet
  7742.       protocol is also incorporated within other application protocols,
  7743.       e.g., FTP and SMTP.
  7744.  
  7745.       Telnet uses a single TCP connection, and its normal data stream
  7746.       ("Network Virtual Terminal" or "NVT" mode) is 7-bit ASCII with
  7747.       escape sequences to embed control functions.  Telnet also allows
  7748.       the negotiation of many optional modes and functions.
  7749.  
  7750.       The primary Telnet specification is to be found in RFC-854
  7751.       [TELNET:1], while the options are defined in many other RFCs; see
  7752.       Section 7 for references.
  7753.  
  7754.    3.2  PROTOCOL WALK-THROUGH
  7755.  
  7756.       3.2.1  Option Negotiation: RFC-854, pp. 2-3
  7757.  
  7758.          Every Telnet implementation MUST include option negotiation and
  7759.          subnegotiation machinery [TELNET:2].
  7760.  
  7761.          A host MUST carefully follow the rules of RFC-854 to avoid
  7762.          option-negotiation loops.  A host MUST refuse (i.e, reply
  7763.          WONT/DONT to a DO/WILL) an unsupported option.  Option
  7764.          negotiation SHOULD continue to function (even if all requests
  7765.          are refused) throughout the lifetime of a Telnet connection.
  7766.  
  7767.          If all option negotiations fail, a Telnet implementation MUST
  7768.          default to, and support, an NVT.
  7769.  
  7770.          DISCUSSION:
  7771.               Even though more sophisticated "terminals" and supporting
  7772.               option negotiations are becoming the norm, all
  7773.               implementations must be prepared to support an NVT for any
  7774.               user-server communication.
  7775.  
  7776.       3.2.2  Telnet Go-Ahead Function: RFC-854, p. 5, and RFC-858
  7777.  
  7778.          On a host that never sends the Telnet command Go Ahead (GA),
  7779.          the Telnet Server MUST attempt to negotiate the Suppress Go
  7780.          Ahead option (i.e., send "WILL Suppress Go Ahead").  A User or
  7781.          Server Telnet MUST always accept negotiation of the Suppress Go
  7782.  
  7783.  
  7784.  
  7785. Internet Engineering Task Force                                [Page 16]
  7786.  
  7787.  
  7788.  
  7789.  
  7790. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  7791.  
  7792.  
  7793.          Ahead option.
  7794.  
  7795.          When it is driving a full-duplex terminal for which GA has no
  7796.          meaning, a User Telnet implementation MAY ignore GA commands.
  7797.  
  7798.          DISCUSSION:
  7799.               Half-duplex ("locked-keyboard") line-at-a-time terminals
  7800.               for which the Go-Ahead mechanism was designed have largely
  7801.               disappeared from the scene.  It turned out to be difficult
  7802.               to implement sending the Go-Ahead signal in many operating
  7803.               systems, even some systems that support native half-duplex
  7804.               terminals.  The difficulty is typically that the Telnet
  7805.               server code does not have access to information about
  7806.               whether the user process is blocked awaiting input from
  7807.               the Telnet connection, i.e., it cannot reliably determine
  7808.               when to send a GA command.  Therefore, most Telnet Server
  7809.               hosts do not send GA commands.
  7810.  
  7811.               The effect of the rules in this section is to allow either
  7812.               end of a Telnet connection to veto the use of GA commands.
  7813.  
  7814.               There is a class of half-duplex terminals that is still
  7815.               commercially important: "data entry terminals," which
  7816.               interact in a full-screen manner.  However, supporting
  7817.               data entry terminals using the Telnet protocol does not
  7818.               require the Go Ahead signal; see Section 3.3.2.
  7819.  
  7820.       3.2.3  Control Functions: RFC-854, pp. 7-8
  7821.  
  7822.          The list of Telnet commands has been extended to include EOR
  7823.          (End-of-Record), with code 239 [TELNET:9].
  7824.  
  7825.          Both User and Server Telnets MAY support the control functions
  7826.          EOR, EC, EL, and Break, and MUST support AO, AYT, DM, IP, NOP,
  7827.          SB, and SE.
  7828.  
  7829.          A host MUST be able to receive and ignore any Telnet control
  7830.          functions that it does not support.
  7831.  
  7832.          DISCUSSION:
  7833.               Note that a Server Telnet is required to support the
  7834.               Telnet IP (Interrupt Process) function, even if the server
  7835.               host has an equivalent in-stream function (e.g., Control-C
  7836.               in many systems).  The Telnet IP function may be stronger
  7837.               than an in-stream interrupt command, because of the out-
  7838.               of-band effect of TCP urgent data.
  7839.  
  7840.               The EOR control function may be used to delimit the
  7841.  
  7842.  
  7843.  
  7844. Internet Engineering Task Force                                [Page 17]
  7845.  
  7846.  
  7847.  
  7848.  
  7849. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  7850.  
  7851.  
  7852.               stream.  An important application is data entry terminal
  7853.               support (see Section 3.3.2).  There was concern that since
  7854.               EOR had not been defined in RFC-854, a host that was not
  7855.               prepared to correctly ignore unknown Telnet commands might
  7856.               crash if it received an EOR.  To protect such hosts, the
  7857.               End-of-Record option [TELNET:9] was introduced; however, a
  7858.               properly implemented Telnet program will not require this
  7859.               protection.
  7860.  
  7861.       3.2.4  Telnet "Synch" Signal: RFC-854, pp. 8-10
  7862.  
  7863.          When it receives "urgent" TCP data, a User or Server Telnet
  7864.          MUST discard all data except Telnet commands until the DM (and
  7865.          end of urgent) is reached.
  7866.  
  7867.          When it sends Telnet IP (Interrupt Process), a User Telnet
  7868.          SHOULD follow it by the Telnet "Synch" sequence, i.e., send as
  7869.          TCP urgent data the sequence "IAC IP IAC DM".  The TCP urgent
  7870.          pointer points to the DM octet.
  7871.  
  7872.          When it receives a Telnet IP command, a Server Telnet MAY send
  7873.          a Telnet "Synch" sequence back to the user, to flush the output
  7874.          stream.  The choice ought to be consistent with the way the
  7875.          server operating system behaves when a local user interrupts a
  7876.          process.
  7877.  
  7878.          When it receives a Telnet AO command, a Server Telnet MUST send
  7879.          a Telnet "Synch" sequence back to the user, to flush the output
  7880.          stream.
  7881.  
  7882.          A User Telnet SHOULD have the capability of flushing output
  7883.          when it sends a Telnet IP; see also Section 3.4.5.
  7884.  
  7885.          DISCUSSION:
  7886.               There are three possible ways for a User Telnet to flush
  7887.               the stream of server output data:
  7888.  
  7889.               (1)  Send AO after IP.
  7890.  
  7891.                    This will cause the server host to send a "flush-
  7892.                    buffered-output" signal to its operating system.
  7893.                    However, the AO may not take effect locally, i.e.,
  7894.                    stop terminal output at the User Telnet end, until
  7895.                    the Server Telnet has received and processed the AO
  7896.                    and has sent back a "Synch".
  7897.  
  7898.               (2)  Send DO TIMING-MARK [TELNET:7] after IP, and discard
  7899.                    all output locally until a WILL/WONT TIMING-MARK is
  7900.  
  7901.  
  7902.  
  7903. Internet Engineering Task Force                                [Page 18]
  7904.  
  7905.  
  7906.  
  7907.  
  7908. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  7909.  
  7910.  
  7911.                    received from the Server Telnet.
  7912.  
  7913.                    Since the DO TIMING-MARK will be processed after the
  7914.                    IP at the server, the reply to it should be in the
  7915.                    right place in the output data stream.  However, the
  7916.                    TIMING-MARK will not send a "flush buffered output"
  7917.                    signal to the server operating system.  Whether or
  7918.                    not this is needed is dependent upon the server
  7919.                    system.
  7920.  
  7921.               (3)  Do both.
  7922.  
  7923.               The best method is not entirely clear, since it must
  7924.               accommodate a number of existing server hosts that do not
  7925.               follow the Telnet standards in various ways.  The safest
  7926.               approach is probably to provide a user-controllable option
  7927.               to select (1), (2), or (3).
  7928.  
  7929.       3.2.5  NVT Printer and Keyboard: RFC-854, p. 11
  7930.  
  7931.          In NVT mode, a Telnet SHOULD NOT send characters with the
  7932.          high-order bit 1, and MUST NOT send it as a parity bit.
  7933.          Implementations that pass the high-order bit to applications
  7934.          SHOULD negotiate binary mode (see Section 3.2.6).
  7935.  
  7936.  
  7937.          DISCUSSION:
  7938.               Implementors should be aware that a strict reading of
  7939.               RFC-854 allows a client or server expecting NVT ASCII to
  7940.               ignore characters with the high-order bit set.  In
  7941.               general, binary mode is expected to be used for
  7942.               transmission of an extended (beyond 7-bit) character set
  7943.               with Telnet.
  7944.  
  7945.               However, there exist applications that really need an 8-
  7946.               bit NVT mode, which is currently not defined, and these
  7947.               existing applications do set the high-order bit during
  7948.               part or all of the life of a Telnet connection.  Note that
  7949.               binary mode is not the same as 8-bit NVT mode, since
  7950.               binary mode turns off end-of-line processing.  For this
  7951.               reason, the requirements on the high-order bit are stated
  7952.               as SHOULD, not MUST.
  7953.  
  7954.               RFC-854 defines a minimal set of properties of a "network
  7955.               virtual terminal" or NVT; this is not meant to preclude
  7956.               additional features in a real terminal.  A Telnet
  7957.               connection is fully transparent to all 7-bit ASCII
  7958.               characters, including arbitrary ASCII control characters.
  7959.  
  7960.  
  7961.  
  7962. Internet Engineering Task Force                                [Page 19]
  7963.  
  7964.  
  7965.  
  7966.  
  7967. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  7968.  
  7969.  
  7970.               For example, a terminal might support full-screen commands
  7971.               coded as ASCII escape sequences; a Telnet implementation
  7972.               would pass these sequences as uninterpreted data.  Thus,
  7973.               an NVT should not be conceived as a terminal type of a
  7974.               highly-restricted device.
  7975.  
  7976.       3.2.6  Telnet Command Structure: RFC-854, p. 13
  7977.  
  7978.          Since options may appear at any point in the data stream, a
  7979.          Telnet escape character (known as IAC, with the value 255) to
  7980.          be sent as data MUST be doubled.
  7981.  
  7982.       3.2.7  Telnet Binary Option: RFC-856
  7983.  
  7984.          When the Binary option has been successfully negotiated,
  7985.          arbitrary 8-bit characters are allowed.  However, the data
  7986.          stream MUST still be scanned for IAC characters, any embedded
  7987.          Telnet commands MUST be obeyed, and data bytes equal to IAC
  7988.          MUST be doubled.  Other character processing (e.g., replacing
  7989.          CR by CR NUL or by CR LF) MUST NOT be done.  In particular,
  7990.          there is no end-of-line convention (see Section 3.3.1) in
  7991.          binary mode.
  7992.  
  7993.          DISCUSSION:
  7994.               The Binary option is normally negotiated in both
  7995.               directions, to change the Telnet connection from NVT mode
  7996.               to "binary mode".
  7997.  
  7998.               The sequence IAC EOR can be used to delimit blocks of data
  7999.               within a binary-mode Telnet stream.
  8000.  
  8001.       3.2.8  Telnet Terminal-Type Option: RFC-1091
  8002.  
  8003.          The Terminal-Type option MUST use the terminal type names
  8004.          officially defined in the Assigned Numbers RFC [INTRO:5], when
  8005.          they are available for the particular terminal.  However, the
  8006.          receiver of a Terminal-Type option MUST accept any name.
  8007.  
  8008.          DISCUSSION:
  8009.               RFC-1091 [TELNET:10] updates an earlier version of the
  8010.               Terminal-Type option defined in RFC-930.  The earlier
  8011.               version allowed a server host capable of supporting
  8012.               multiple terminal types to learn the type of a particular
  8013.               client's terminal, assuming that each physical terminal
  8014.               had an intrinsic type.  However, today a "terminal" is
  8015.               often really a terminal emulator program running in a PC,
  8016.               perhaps capable of emulating a range of terminal types.
  8017.               Therefore, RFC-1091 extends the specification to allow a
  8018.  
  8019.  
  8020.  
  8021. Internet Engineering Task Force                                [Page 20]
  8022.  
  8023.  
  8024.  
  8025.  
  8026. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8027.  
  8028.  
  8029.               more general terminal-type negotiation between User and
  8030.               Server Telnets.
  8031.  
  8032.    3.3  SPECIFIC ISSUES
  8033.  
  8034.       3.3.1  Telnet End-of-Line Convention
  8035.  
  8036.          The Telnet protocol defines the sequence CR LF to mean "end-
  8037.          of-line".  For terminal input, this corresponds to a command-
  8038.          completion or "end-of-line" key being pressed on a user
  8039.          terminal; on an ASCII terminal, this is the CR key, but it may
  8040.          also be labelled "Return" or "Enter".
  8041.  
  8042.          When a Server Telnet receives the Telnet end-of-line sequence
  8043.          CR LF as input from a remote terminal, the effect MUST be the
  8044.          same as if the user had pressed the "end-of-line" key on a
  8045.          local terminal.  On server hosts that use ASCII, in particular,
  8046.          receipt of the Telnet sequence CR LF must cause the same effect
  8047.          as a local user pressing the CR key on a local terminal.  Thus,
  8048.          CR LF and CR NUL MUST have the same effect on an ASCII server
  8049.          host when received as input over a Telnet connection.
  8050.  
  8051.          A User Telnet MUST be able to send any of the forms: CR LF, CR
  8052.          NUL, and LF.  A User Telnet on an ASCII host SHOULD have a
  8053.          user-controllable mode to send either CR LF or CR NUL when the
  8054.          user presses the "end-of-line" key, and CR LF SHOULD be the
  8055.          default.
  8056.  
  8057.          The Telnet end-of-line sequence CR LF MUST be used to send
  8058.          Telnet data that is not terminal-to-computer (e.g., for Server
  8059.          Telnet sending output, or the Telnet protocol incorporated
  8060.          another application protocol).
  8061.  
  8062.          DISCUSSION:
  8063.               To allow interoperability between arbitrary Telnet clients
  8064.               and servers, the Telnet protocol defined a standard
  8065.               representation for a line terminator.  Since the ASCII
  8066.               character set includes no explicit end-of-line character,
  8067.               systems have chosen various representations, e.g., CR, LF,
  8068.               and the sequence CR LF.  The Telnet protocol chose the CR
  8069.               LF sequence as the standard for network transmission.
  8070.  
  8071.               Unfortunately, the Telnet protocol specification in RFC-
  8072.               854 [TELNET:1] has turned out to be somewhat ambiguous on
  8073.               what character(s) should be sent from client to server for
  8074.               the "end-of-line" key.  The result has been a massive and
  8075.               continuing interoperability headache, made worse by
  8076.               various faulty implementations of both User and Server
  8077.  
  8078.  
  8079.  
  8080. Internet Engineering Task Force                                [Page 21]
  8081.  
  8082.  
  8083.  
  8084.  
  8085. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8086.  
  8087.  
  8088.               Telnets.
  8089.  
  8090.               Although the Telnet protocol is based on a perfectly
  8091.               symmetric model, in a remote login session the role of the
  8092.               user at a terminal differs from the role of the server
  8093.               host.  For example, RFC-854 defines the meaning of CR, LF,
  8094.               and CR LF as output from the server, but does not specify
  8095.               what the User Telnet should send when the user presses the
  8096.               "end-of-line" key on the terminal; this turns out to be
  8097.               the point at issue.
  8098.  
  8099.               When a user presses the "end-of-line" key, some User
  8100.               Telnet implementations send CR LF, while others send CR
  8101.               NUL (based on a different interpretation of the same
  8102.               sentence in RFC-854).  These will be equivalent for a
  8103.               correctly-implemented ASCII server host, as discussed
  8104.               above.  For other servers, a mode in the User Telnet is
  8105.               needed.
  8106.  
  8107.               The existence of User Telnets that send only CR NUL when
  8108.               CR is pressed creates a dilemma for non-ASCII hosts: they
  8109.               can either treat CR NUL as equivalent to CR LF in input,
  8110.               thus precluding the possibility of entering a "bare" CR,
  8111.               or else lose complete interworking.
  8112.  
  8113.               Suppose a user on host A uses Telnet to log into a server
  8114.               host B, and then execute B's User Telnet program to log
  8115.               into server host C.  It is desirable for the Server/User
  8116.               Telnet combination on B to be as transparent as possible,
  8117.               i.e., to appear as if A were connected directly to C.  In
  8118.               particular, correct implementation will make B transparent
  8119.               to Telnet end-of-line sequences, except that CR LF may be
  8120.               translated to CR NUL or vice versa.
  8121.  
  8122.          IMPLEMENTATION:
  8123.               To understand Telnet end-of-line issues, one must have at
  8124.               least a general model of the relationship of Telnet to the
  8125.               local operating system.  The Server Telnet process is
  8126.               typically coupled into the terminal driver software of the
  8127.               operating system as a pseudo-terminal.  A Telnet end-of-
  8128.               line sequence received by the Server Telnet must have the
  8129.               same effect as pressing the end-of-line key on a real
  8130.               locally-connected terminal.
  8131.  
  8132.               Operating systems that support interactive character-at-
  8133.               a-time applications (e.g., editors) typically have two
  8134.               internal modes for their terminal I/O: a formatted mode,
  8135.               in which local conventions for end-of-line and other
  8136.  
  8137.  
  8138.  
  8139. Internet Engineering Task Force                                [Page 22]
  8140.  
  8141.  
  8142.  
  8143.  
  8144. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8145.  
  8146.  
  8147.               formatting rules have been applied to the data stream, and
  8148.               a "raw" mode, in which the application has direct access
  8149.               to every character as it was entered.  A Server Telnet
  8150.               must be implemented in such a way that these modes have
  8151.               the same effect for remote as for local terminals.  For
  8152.               example, suppose a CR LF or CR NUL is received by the
  8153.               Server Telnet on an ASCII host.  In raw mode, a CR
  8154.               character is passed to the application; in formatted mode,
  8155.               the local system's end-of-line convention is used.
  8156.  
  8157.       3.3.2  Data Entry Terminals
  8158.  
  8159.          DISCUSSION:
  8160.               In addition to the line-oriented and character-oriented
  8161.               ASCII terminals for which Telnet was designed, there are
  8162.               several families of video display terminals that are
  8163.               sometimes known as "data entry terminals" or DETs.  The
  8164.               IBM 3270 family is a well-known example.
  8165.  
  8166.               Two Internet protocols have been designed to support
  8167.               generic DETs: SUPDUP [TELNET:16, TELNET:17], and the DET
  8168.               option [TELNET:18, TELNET:19].  The DET option drives a
  8169.               data entry terminal over a Telnet connection using (sub-)
  8170.               negotiation.  SUPDUP is a completely separate terminal
  8171.               protocol, which can be entered from Telnet by negotiation.
  8172.               Although both SUPDUP and the DET option have been used
  8173.               successfully in particular environments, neither has
  8174.               gained general acceptance or wide implementation.
  8175.  
  8176.               A different approach to DET interaction has been developed
  8177.               for supporting the IBM 3270 family through Telnet,
  8178.               although the same approach would be applicable to any DET.
  8179.               The idea is to enter a "native DET" mode, in which the
  8180.               native DET input/output stream is sent as binary data.
  8181.               The Telnet EOR command is used to delimit logical records
  8182.               (e.g., "screens") within this binary stream.
  8183.  
  8184.          IMPLEMENTATION:
  8185.               The rules for entering and leaving native DET mode are as
  8186.               follows:
  8187.  
  8188.               o    The Server uses the Terminal-Type option [TELNET:10]
  8189.                    to learn that the client is a DET.
  8190.  
  8191.               o    It is conventional, but not required, that both ends
  8192.                    negotiate the EOR option [TELNET:9].
  8193.  
  8194.               o    Both ends negotiate the Binary option [TELNET:3] to
  8195.  
  8196.  
  8197.  
  8198. Internet Engineering Task Force                                [Page 23]
  8199.  
  8200.  
  8201.  
  8202.  
  8203. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8204.  
  8205.  
  8206.                    enter native DET mode.
  8207.  
  8208.               o    When either end negotiates out of binary mode, the
  8209.                    other end does too, and the mode then reverts to
  8210.                    normal NVT.
  8211.  
  8212.  
  8213.       3.3.3  Option Requirements
  8214.  
  8215.          Every Telnet implementation MUST support the Binary option
  8216.          [TELNET:3] and the Suppress Go Ahead option [TELNET:5], and
  8217.          SHOULD support the Echo [TELNET:4], Status [TELNET:6], End-of-
  8218.          Record [TELNET:9], and Extended Options List [TELNET:8]
  8219.          options.
  8220.  
  8221.          A User or Server Telnet SHOULD support the Window Size Option
  8222.          [TELNET:12] if the local operating system provides the
  8223.          corresponding capability.
  8224.  
  8225.          DISCUSSION:
  8226.               Note that the End-of-Record option only signifies that a
  8227.               Telnet can receive a Telnet EOR without crashing;
  8228.               therefore, every Telnet ought to be willing to accept
  8229.               negotiation of the End-of-Record option.  See also the
  8230.               discussion in Section 3.2.3.
  8231.  
  8232.       3.3.4  Option Initiation
  8233.  
  8234.          When the Telnet protocol is used in a client/server situation,
  8235.          the server SHOULD initiate negotiation of the terminal
  8236.          interaction mode it expects.
  8237.  
  8238.          DISCUSSION:
  8239.               The Telnet protocol was defined to be perfectly
  8240.               symmetrical, but its application is generally asymmetric.
  8241.               Remote login has been known to fail because NEITHER side
  8242.               initiated negotiation of the required non-default terminal
  8243.               modes.  It is generally the server that determines the
  8244.               preferred mode, so the server needs to initiate the
  8245.               negotiation; since the negotiation is symmetric, the user
  8246.               can also initiate it.
  8247.  
  8248.          A client (User Telnet) SHOULD provide a means for users to
  8249.          enable and disable the initiation of option negotiation.
  8250.  
  8251.          DISCUSSION:
  8252.               A user sometimes needs to connect to an application
  8253.               service (e.g., FTP or SMTP) that uses Telnet for its
  8254.  
  8255.  
  8256.  
  8257. Internet Engineering Task Force                                [Page 24]
  8258.  
  8259.  
  8260.  
  8261.  
  8262. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8263.  
  8264.  
  8265.               control stream but does not support Telnet options.  User
  8266.               Telnet may be used for this purpose if initiation of
  8267.               option negotiation is  disabled.
  8268.  
  8269.       3.3.5  Telnet Linemode Option
  8270.  
  8271.          DISCUSSION:
  8272.               An important new Telnet option, LINEMODE [TELNET:12], has
  8273.               been proposed.  The LINEMODE option provides a standard
  8274.               way for a User Telnet and a Server Telnet to agree that
  8275.               the client rather than the server will perform terminal
  8276.               character processing.  When the client has prepared a
  8277.               complete line of text, it will send it to the server in
  8278.               (usually) one TCP packet.  This option will greatly
  8279.               decrease the packet cost of Telnet sessions and will also
  8280.               give much better user response over congested or long-
  8281.               delay networks.
  8282.  
  8283.               The LINEMODE option allows dynamic switching between local
  8284.               and remote character processing.  For example, the Telnet
  8285.               connection will automatically negotiate into single-
  8286.               character mode while a full screen editor is running, and
  8287.               then return to linemode when the editor is finished.
  8288.  
  8289.               We expect that when this RFC is released, hosts should
  8290.               implement the client side of this option, and may
  8291.               implement the server side of this option.  To properly
  8292.               implement the server side, the server needs to be able to
  8293.               tell the local system not to do any input character
  8294.               processing, but to remember its current terminal state and
  8295.               notify the Server Telnet process whenever the state
  8296.               changes.  This will allow password echoing and full screen
  8297.               editors to be handled properly, for example.
  8298.  
  8299.    3.4  TELNET/USER INTERFACE
  8300.  
  8301.       3.4.1  Character Set Transparency
  8302.  
  8303.          User Telnet implementations SHOULD be able to send or receive
  8304.          any 7-bit ASCII character.  Where possible, any special
  8305.          character interpretations by the user host's operating system
  8306.          SHOULD be bypassed so that these characters can conveniently be
  8307.          sent and received on the connection.
  8308.  
  8309.          Some character value MUST be reserved as "escape to command
  8310.          mode"; conventionally, doubling this character allows it to be
  8311.          entered as data.  The specific character used SHOULD be user
  8312.          selectable.
  8313.  
  8314.  
  8315.  
  8316. Internet Engineering Task Force                                [Page 25]
  8317.  
  8318.  
  8319.  
  8320.  
  8321. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8322.  
  8323.  
  8324.          On binary-mode connections, a User Telnet program MAY provide
  8325.          an escape mechanism for entering arbitrary 8-bit values, if the
  8326.          host operating system doesn't allow them to be entered directly
  8327.          from the keyboard.
  8328.  
  8329.          IMPLEMENTATION:
  8330.               The transparency issues are less pressing on servers, but
  8331.               implementors should take care in dealing with issues like:
  8332.               masking off parity bits (sent by an older, non-conforming
  8333.               client) before they reach programs that expect only NVT
  8334.               ASCII, and properly handling programs that request 8-bit
  8335.               data streams.
  8336.  
  8337.       3.4.2  Telnet Commands
  8338.  
  8339.          A User Telnet program MUST provide a user the capability of
  8340.          entering any of the Telnet control functions IP, AO, or AYT,
  8341.          and SHOULD provide the capability of entering EC, EL, and
  8342.          Break.
  8343.  
  8344.       3.4.3  TCP Connection Errors
  8345.  
  8346.          A User Telnet program SHOULD report to the user any TCP errors
  8347.          that are reported by the transport layer (see "TCP/Application
  8348.          Layer Interface" section in [INTRO:1]).
  8349.  
  8350.       3.4.4  Non-Default Telnet Contact Port
  8351.  
  8352.          A User Telnet program SHOULD allow the user to optionally
  8353.          specify a non-standard contact port number at the Server Telnet
  8354.          host.
  8355.  
  8356.       3.4.5  Flushing Output
  8357.  
  8358.          A User Telnet program SHOULD provide the user the ability to
  8359.          specify whether or not output should be flushed when an IP is
  8360.          sent; see Section 3.2.4.
  8361.  
  8362.          For any output flushing scheme that causes the User Telnet to
  8363.          flush output locally until a Telnet signal is received from the
  8364.          Server, there SHOULD be a way for the user to manually restore
  8365.          normal output, in case the Server fails to send the expected
  8366.          signal.
  8367.  
  8368.  
  8369.  
  8370.  
  8371.  
  8372.  
  8373.  
  8374.  
  8375. Internet Engineering Task Force                                [Page 26]
  8376.  
  8377.  
  8378.  
  8379.  
  8380. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8381.  
  8382.  
  8383.    3.5.  TELNET REQUIREMENTS SUMMARY
  8384.  
  8385.  
  8386.                                                  |        | | | |S| |
  8387.                                                  |        | | | |H| |F
  8388.                                                  |        | | | |O|M|o
  8389.                                                  |        | |S| |U|U|o
  8390.                                                  |        | |H| |L|S|t
  8391.                                                  |        |M|O| |D|T|n
  8392.                                                  |        |U|U|M| | |o
  8393.                                                  |        |S|L|A|N|N|t
  8394.                                                  |        |T|D|Y|O|O|t
  8395. FEATURE                                          |SECTION | | | |T|T|e
  8396. -------------------------------------------------|--------|-|-|-|-|-|--
  8397.                                                  |        | | | | | |
  8398. Option Negotiation                               |3.2.1   |x| | | | |
  8399.   Avoid negotiation loops                        |3.2.1   |x| | | | |
  8400.   Refuse unsupported options                     |3.2.1   |x| | | | |
  8401.   Negotiation OK anytime on connection           |3.2.1   | |x| | | |
  8402.   Default to NVT                                 |3.2.1   |x| | | | |
  8403.   Send official name in Term-Type option         |3.2.8   |x| | | | |
  8404.   Accept any name in Term-Type option            |3.2.8   |x| | | | |
  8405.   Implement Binary, Suppress-GA options          |3.3.3   |x| | | | |
  8406.   Echo, Status, EOL, Ext-Opt-List options        |3.3.3   | |x| | | |
  8407.   Implement Window-Size option if appropriate    |3.3.3   | |x| | | |
  8408.   Server initiate mode negotiations              |3.3.4   | |x| | | |
  8409.   User can enable/disable init negotiations      |3.3.4   | |x| | | |
  8410.                                                  |        | | | | | |
  8411. Go-Aheads                                        |        | | | | | |
  8412.   Non-GA server negotiate SUPPRESS-GA option     |3.2.2   |x| | | | |
  8413.   User or Server accept SUPPRESS-GA option       |3.2.2   |x| | | | |
  8414.   User Telnet ignore GA's                        |3.2.2   | | |x| | |
  8415.                                                  |        | | | | | |
  8416. Control Functions                                |        | | | | | |
  8417.   Support SE NOP DM IP AO AYT SB                 |3.2.3   |x| | | | |
  8418.   Support EOR EC EL Break                        |3.2.3   | | |x| | |
  8419.   Ignore unsupported control functions           |3.2.3   |x| | | | |
  8420.   User, Server discard urgent data up to DM      |3.2.4   |x| | | | |
  8421.   User Telnet send "Synch" after IP, AO, AYT     |3.2.4   | |x| | | |
  8422.   Server Telnet reply Synch to IP                |3.2.4   | | |x| | |
  8423.   Server Telnet reply Synch to AO                |3.2.4   |x| | | | |
  8424.   User Telnet can flush output when send IP      |3.2.4   | |x| | | |
  8425.                                                  |        | | | | | |
  8426. Encoding                                         |        | | | | | |
  8427.   Send high-order bit in NVT mode                |3.2.5   | | | |x| |
  8428.   Send high-order bit as parity bit              |3.2.5   | | | | |x|
  8429.   Negot. BINARY if pass high-ord. bit to applic  |3.2.5   | |x| | | |
  8430.   Always double IAC data byte                    |3.2.6   |x| | | | |
  8431.  
  8432.  
  8433.  
  8434. Internet Engineering Task Force                                [Page 27]
  8435.  
  8436.  
  8437.  
  8438.  
  8439. RFC1123                  REMOTE LOGIN -- TELNET             October 1989
  8440.  
  8441.  
  8442.   Double IAC data byte in binary mode            |3.2.7   |x| | | | |
  8443.   Obey Telnet cmds in binary mode                |3.2.7   |x| | | | |
  8444.   End-of-line, CR NUL in binary mode             |3.2.7   | | | | |x|
  8445.                                                  |        | | | | | |
  8446. End-of-Line                                      |        | | | | | |
  8447.   EOL at Server same as local end-of-line        |3.3.1   |x| | | | |
  8448.   ASCII Server accept CR LF or CR NUL for EOL    |3.3.1   |x| | | | |
  8449.   User Telnet able to send CR LF, CR NUL, or LF  |3.3.1   |x| | | | |
  8450.     ASCII user able to select CR LF/CR NUL       |3.3.1   | |x| | | |
  8451.     User Telnet default mode is CR LF            |3.3.1   | |x| | | |
  8452.   Non-interactive uses CR LF for EOL             |3.3.1   |x| | | | |
  8453.                                                  |        | | | | | |
  8454. User Telnet interface                            |        | | | | | |
  8455.   Input & output all 7-bit characters            |3.4.1   | |x| | | |
  8456.   Bypass local op sys interpretation             |3.4.1   | |x| | | |
  8457.   Escape character                               |3.4.1   |x| | | | |
  8458.      User-settable escape character              |3.4.1   | |x| | | |
  8459.   Escape to enter 8-bit values                   |3.4.1   | | |x| | |
  8460.   Can input IP, AO, AYT                          |3.4.2   |x| | | | |
  8461.   Can input EC, EL, Break                        |3.4.2   | |x| | | |
  8462.   Report TCP connection errors to user           |3.4.3   | |x| | | |
  8463.   Optional non-default contact port              |3.4.4   | |x| | | |
  8464.   Can spec: output flushed when IP sent          |3.4.5   | |x| | | |
  8465.   Can manually restore output mode               |3.4.5   | |x| | | |
  8466.                                                  |        | | | | | |
  8467.  
  8468.  
  8469.  
  8470.  
  8471.  
  8472.  
  8473.  
  8474.  
  8475.  
  8476.  
  8477.  
  8478.  
  8479.  
  8480.  
  8481.  
  8482.  
  8483.  
  8484.  
  8485.  
  8486.  
  8487.  
  8488.  
  8489.  
  8490.  
  8491.  
  8492.  
  8493. Internet Engineering Task Force                                [Page 28]
  8494.  
  8495.  
  8496.  
  8497.  
  8498. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8499.  
  8500.  
  8501. 4.  FILE TRANSFER
  8502.  
  8503.    4.1  FILE TRANSFER PROTOCOL -- FTP
  8504.  
  8505.       4.1.1  INTRODUCTION
  8506.  
  8507.          The File Transfer Protocol FTP is the primary Internet standard
  8508.          for file transfer.  The current specification is contained in
  8509.          RFC-959 [FTP:1].
  8510.  
  8511.          FTP uses separate simultaneous TCP connections for control and
  8512.          for data transfer.  The FTP protocol includes many features,
  8513.          some of which are not commonly implemented.  However, for every
  8514.          feature in FTP, there exists at least one implementation.  The
  8515.          minimum implementation defined in RFC-959 was too small, so a
  8516.          somewhat larger minimum implementation is defined here.
  8517.  
  8518.          Internet users have been unnecessarily burdened for years by
  8519.          deficient FTP implementations.  Protocol implementors have
  8520.          suffered from the erroneous opinion that implementing FTP ought
  8521.          to be a small and trivial task.  This is wrong, because FTP has
  8522.          a user interface, because it has to deal (correctly) with the
  8523.          whole variety of communication and operating system errors that
  8524.          may occur, and because it has to handle the great diversity of
  8525.          real file systems in the world.
  8526.  
  8527.       4.1.2.  PROTOCOL WALK-THROUGH
  8528.  
  8529.          4.1.2.1  LOCAL Type: RFC-959 Section 3.1.1.4
  8530.  
  8531.             An FTP program MUST support TYPE I ("IMAGE" or binary type)
  8532.             as well as TYPE L 8 ("LOCAL" type with logical byte size 8).
  8533.             A machine whose memory is organized into m-bit words, where
  8534.             m is not a multiple of 8, MAY also support TYPE L m.
  8535.  
  8536.             DISCUSSION:
  8537.                  The command "TYPE L 8" is often required to transfer
  8538.                  binary data between a machine whose memory is organized
  8539.                  into (e.g.) 36-bit words and a machine with an 8-bit
  8540.                  byte organization.  For an 8-bit byte machine, TYPE L 8
  8541.                  is equivalent to IMAGE.
  8542.  
  8543.                  "TYPE L m" is sometimes specified to the FTP programs
  8544.                  on two m-bit word machines to ensure the correct
  8545.                  transfer of a native-mode binary file from one machine
  8546.                  to the other.  However, this command should have the
  8547.                  same effect on these machines as "TYPE I".
  8548.  
  8549.  
  8550.  
  8551.  
  8552. Internet Engineering Task Force                                [Page 29]
  8553.  
  8554.  
  8555.  
  8556.  
  8557. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8558.  
  8559.  
  8560.          4.1.2.2  Telnet Format Control: RFC-959 Section 3.1.1.5.2
  8561.  
  8562.             A host that makes no distinction between TYPE N and TYPE T
  8563.             SHOULD implement TYPE T to be identical to TYPE N.
  8564.  
  8565.             DISCUSSION:
  8566.                  This provision should ease interoperation with hosts
  8567.                  that do make this distinction.
  8568.  
  8569.                  Many hosts represent text files internally as strings
  8570.                  of ASCII characters, using the embedded ASCII format
  8571.                  effector characters (LF, BS, FF, ...) to control the
  8572.                  format when a file is printed.  For such hosts, there
  8573.                  is no distinction between "print" files and other
  8574.                  files.  However, systems that use record structured
  8575.                  files typically need a special format for printable
  8576.                  files (e.g., ASA carriage control).   For the latter
  8577.                  hosts, FTP allows a choice of TYPE N or TYPE T.
  8578.  
  8579.          4.1.2.3  Page Structure: RFC-959 Section 3.1.2.3 and Appendix I
  8580.  
  8581.             Implementation of page structure is NOT RECOMMENDED in
  8582.             general. However, if a host system does need to implement
  8583.             FTP for "random access" or "holey" files, it MUST use the
  8584.             defined page structure format rather than define a new
  8585.             private FTP format.
  8586.  
  8587.          4.1.2.4  Data Structure Transformations: RFC-959 Section 3.1.2
  8588.  
  8589.             An FTP transformation between record-structure and file-
  8590.             structure SHOULD be invertible, to the extent possible while
  8591.             making the result useful on the target host.
  8592.  
  8593.             DISCUSSION:
  8594.                  RFC-959 required strict invertibility between record-
  8595.                  structure and file-structure, but in practice,
  8596.                  efficiency and convenience often preclude it.
  8597.                  Therefore, the requirement is being relaxed.  There are
  8598.                  two different objectives for transferring a file:
  8599.                  processing it on the target host, or just storage.  For
  8600.                  storage, strict invertibility is important.  For
  8601.                  processing, the file created on the target host needs
  8602.                  to be in the format expected by application programs on
  8603.                  that host.
  8604.  
  8605.                  As an example of the conflict, imagine a record-
  8606.                  oriented operating system that requires some data files
  8607.                  to have exactly 80 bytes in each record.  While STORing
  8608.  
  8609.  
  8610.  
  8611. Internet Engineering Task Force                                [Page 30]
  8612.  
  8613.  
  8614.  
  8615.  
  8616. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8617.  
  8618.  
  8619.                  a file on such a host, an FTP Server must be able to
  8620.                  pad each line or record to 80 bytes; a later retrieval
  8621.                  of such a file cannot be strictly invertible.
  8622.  
  8623.          4.1.2.5  Data Connection Management: RFC-959 Section 3.3
  8624.  
  8625.             A User-FTP that uses STREAM mode SHOULD send a PORT command
  8626.             to assign a non-default data port before each transfer
  8627.             command is issued.
  8628.  
  8629.             DISCUSSION:
  8630.                  This is required because of the long delay after a TCP
  8631.                  connection is closed until its socket pair can be
  8632.                  reused, to allow multiple transfers during a single FTP
  8633.                  session.  Sending a port command can avoided if a
  8634.                  transfer mode other than stream is used, by leaving the
  8635.                  data transfer connection open between transfers.
  8636.  
  8637.          4.1.2.6  PASV Command: RFC-959 Section 4.1.2
  8638.  
  8639.             A server-FTP MUST implement the PASV command.
  8640.  
  8641.             If multiple third-party transfers are to be executed during
  8642.             the same session, a new PASV command MUST be issued before
  8643.             each transfer command, to obtain a unique port pair.
  8644.  
  8645.             IMPLEMENTATION:
  8646.                  The format of the 227 reply to a PASV command is not
  8647.                  well standardized.  In particular, an FTP client cannot
  8648.                  assume that the parentheses shown on page 40 of RFC-959
  8649.                  will be present (and in fact, Figure 3 on page 43 omits
  8650.                  them).  Therefore, a User-FTP program that interprets
  8651.                  the PASV reply must scan the reply for the first digit
  8652.                  of the host and port numbers.
  8653.  
  8654.                  Note that the host number h1,h2,h3,h4 is the IP address
  8655.                  of the server host that is sending the reply, and that
  8656.                  p1,p2 is a non-default data transfer port that PASV has
  8657.                  assigned.
  8658.  
  8659.          4.1.2.7  LIST and NLST Commands: RFC-959 Section 4.1.3
  8660.  
  8661.             The data returned by an NLST command MUST contain only a
  8662.             simple list of legal pathnames, such that the server can use
  8663.             them directly as the arguments of subsequent data transfer
  8664.             commands for the individual files.
  8665.  
  8666.             The data returned by a LIST or NLST command SHOULD use an
  8667.  
  8668.  
  8669.  
  8670. Internet Engineering Task Force                                [Page 31]
  8671.  
  8672.  
  8673.  
  8674.  
  8675. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8676.  
  8677.  
  8678.             implied TYPE AN, unless the current type is EBCDIC, in which
  8679.             case an implied TYPE EN SHOULD be used.
  8680.  
  8681.             DISCUSSION:
  8682.                  Many FTP clients support macro-commands that will get
  8683.                  or put files matching a wildcard specification, using
  8684.                  NLST to obtain a list of pathnames.  The expansion of
  8685.                  "multiple-put" is local to the client, but "multiple-
  8686.                  get" requires cooperation by the server.
  8687.  
  8688.                  The implied type for LIST and NLST is designed to
  8689.                  provide compatibility with existing User-FTPs, and in
  8690.                  particular with multiple-get commands.
  8691.  
  8692.          4.1.2.8  SITE Command: RFC-959 Section 4.1.3
  8693.  
  8694.             A Server-FTP SHOULD use the SITE command for non-standard
  8695.             features, rather than invent new private commands or
  8696.             unstandardized extensions to existing commands.
  8697.  
  8698.          4.1.2.9  STOU Command: RFC-959 Section 4.1.3
  8699.  
  8700.             The STOU command stores into a uniquely named file.  When it
  8701.             receives an STOU command, a Server-FTP MUST return the
  8702.             actual file name in the "125 Transfer Starting" or the "150
  8703.             Opening Data Connection" message that precedes the transfer
  8704.             (the 250 reply code mentioned in RFC-959 is incorrect).  The
  8705.             exact format of these messages is hereby defined to be as
  8706.             follows:
  8707.  
  8708.                 125 FILE: pppp
  8709.                 150 FILE: pppp
  8710.  
  8711.             where pppp represents the unique pathname of the file that
  8712.             will be written.
  8713.  
  8714.          4.1.2.10  Telnet End-of-line Code: RFC-959, Page 34
  8715.  
  8716.             Implementors MUST NOT assume any correspondence between READ
  8717.             boundaries on the control connection and the Telnet EOL
  8718.             sequences (CR LF).
  8719.  
  8720.             DISCUSSION:
  8721.                  Thus, a server-FTP (or User-FTP) must continue reading
  8722.                  characters from the control connection until a complete
  8723.                  Telnet EOL sequence is encountered, before processing
  8724.                  the command (or response, respectively).  Conversely, a
  8725.                  single READ from the control connection may include
  8726.  
  8727.  
  8728.  
  8729. Internet Engineering Task Force                                [Page 32]
  8730.  
  8731.  
  8732.  
  8733.  
  8734. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8735.  
  8736.  
  8737.                  more than one FTP command.
  8738.  
  8739.          4.1.2.11  FTP Replies: RFC-959 Section 4.2, Page 35
  8740.  
  8741.             A Server-FTP MUST send only correctly formatted replies on
  8742.             the control connection.  Note that RFC-959 (unlike earlier
  8743.             versions of the FTP spec) contains no provision for a
  8744.             "spontaneous" reply message.
  8745.  
  8746.             A Server-FTP SHOULD use the reply codes defined in RFC-959
  8747.             whenever they apply.  However, a server-FTP MAY use a
  8748.             different reply code when needed, as long as the general
  8749.             rules of Section 4.2 are followed. When the implementor has
  8750.             a choice between a 4xx and 5xx reply code, a Server-FTP
  8751.             SHOULD send a 4xx (temporary failure) code when there is any
  8752.             reasonable possibility that a failed FTP will succeed a few
  8753.             hours later.
  8754.  
  8755.             A User-FTP SHOULD generally use only the highest-order digit
  8756.             of a 3-digit reply code for making a procedural decision, to
  8757.             prevent difficulties when a Server-FTP uses non-standard
  8758.             reply codes.
  8759.  
  8760.             A User-FTP MUST be able to handle multi-line replies.  If
  8761.             the implementation imposes a limit on the number of lines
  8762.             and if this limit is exceeded, the User-FTP MUST recover,
  8763.             e.g., by ignoring the excess lines until the end of the
  8764.             multi-line reply is reached.
  8765.  
  8766.             A User-FTP SHOULD NOT interpret a 421 reply code ("Service
  8767.             not available, closing control connection") specially, but
  8768.             SHOULD detect closing of the control connection by the
  8769.             server.
  8770.  
  8771.             DISCUSSION:
  8772.                  Server implementations that fail to strictly follow the
  8773.                  reply rules often cause FTP user programs to hang.
  8774.                  Note that RFC-959 resolved ambiguities in the reply
  8775.                  rules found in earlier FTP specifications and must be
  8776.                  followed.
  8777.  
  8778.                  It is important to choose FTP reply codes that properly
  8779.                  distinguish between temporary and permanent failures,
  8780.                  to allow the successful use of file transfer client
  8781.                  daemons.  These programs depend on the reply codes to
  8782.                  decide whether or not to retry a failed transfer; using
  8783.                  a permanent failure code (5xx) for a temporary error
  8784.                  will cause these programs to give up unnecessarily.
  8785.  
  8786.  
  8787.  
  8788. Internet Engineering Task Force                                [Page 33]
  8789.  
  8790.  
  8791.  
  8792.  
  8793. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8794.  
  8795.  
  8796.                  When the meaning of a reply matches exactly the text
  8797.                  shown in RFC-959, uniformity will be enhanced by using
  8798.                  the RFC-959 text verbatim.  However, a Server-FTP
  8799.                  implementor is encouraged to choose reply text that
  8800.                  conveys specific system-dependent information, when
  8801.                  appropriate.
  8802.  
  8803.          4.1.2.12  Connections: RFC-959 Section 5.2
  8804.  
  8805.             The words "and the port used" in the second paragraph of
  8806.             this section of RFC-959 are erroneous (historical), and they
  8807.             should be ignored.
  8808.  
  8809.             On a multihomed server host, the default data transfer port
  8810.             (L-1) MUST be associated with the same local IP address as
  8811.             the corresponding control connection to port L.
  8812.  
  8813.             A user-FTP MUST NOT send any Telnet controls other than
  8814.             SYNCH and IP on an FTP control connection. In particular, it
  8815.             MUST NOT attempt to negotiate Telnet options on the control
  8816.             connection.  However, a server-FTP MUST be capable of
  8817.             accepting and refusing Telnet negotiations (i.e., sending
  8818.             DONT/WONT).
  8819.  
  8820.             DISCUSSION:
  8821.                  Although the RFC says: "Server- and User- processes
  8822.                  should follow the conventions for the Telnet
  8823.                  protocol...[on the control connection]", it is not the
  8824.                  intent that Telnet option negotiation is to be
  8825.                  employed.
  8826.  
  8827.          4.1.2.13  Minimum Implementation; RFC-959 Section 5.1
  8828.  
  8829.             The following commands and options MUST be supported by
  8830.             every server-FTP and user-FTP, except in cases where the
  8831.             underlying file system or operating system does not allow or
  8832.             support a particular command.
  8833.  
  8834.                  Type: ASCII Non-print, IMAGE, LOCAL 8
  8835.                  Mode: Stream
  8836.                  Structure: File, Record*
  8837.                  Commands:
  8838.                     USER, PASS, ACCT,
  8839.                     PORT, PASV,
  8840.                     TYPE, MODE, STRU,
  8841.                     RETR, STOR, APPE,
  8842.                     RNFR, RNTO, DELE,
  8843.                     CWD,  CDUP, RMD,  MKD,  PWD,
  8844.  
  8845.  
  8846.  
  8847. Internet Engineering Task Force                                [Page 34]
  8848.  
  8849.  
  8850.  
  8851.  
  8852. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8853.  
  8854.  
  8855.                     LIST, NLST,
  8856.                     SYST, STAT,
  8857.                     HELP, NOOP, QUIT.
  8858.  
  8859.             *Record structure is REQUIRED only for hosts whose file
  8860.             systems support record structure.
  8861.  
  8862.             DISCUSSION:
  8863.                  Vendors are encouraged to implement a larger subset of
  8864.                  the protocol.  For example, there are important
  8865.                  robustness features in the protocol (e.g., Restart,
  8866.                  ABOR, block mode) that would be an aid to some Internet
  8867.                  users but are not widely implemented.
  8868.  
  8869.                  A host that does not have record structures in its file
  8870.                  system may still accept files with STRU R, recording
  8871.                  the byte stream literally.
  8872.  
  8873.       4.1.3  SPECIFIC ISSUES
  8874.  
  8875.          4.1.3.1  Non-standard Command Verbs
  8876.  
  8877.             FTP allows "experimental" commands, whose names begin with
  8878.             "X".  If these commands are subsequently adopted as
  8879.             standards, there may still be existing implementations using
  8880.             the "X" form.  At present, this is true for the directory
  8881.             commands:
  8882.  
  8883.                 RFC-959   "Experimental"
  8884.  
  8885.                   MKD        XMKD
  8886.                   RMD        XRMD
  8887.                   PWD        XPWD
  8888.                   CDUP       XCUP
  8889.                   CWD        XCWD
  8890.  
  8891.             All FTP implementations SHOULD recognize both forms of these
  8892.             commands, by simply equating them with extra entries in the
  8893.             command lookup table.
  8894.  
  8895.             IMPLEMENTATION:
  8896.                  A User-FTP can access a server that supports only the
  8897.                  "X" forms by implementing a mode switch, or
  8898.                  automatically using the following procedure: if the
  8899.                  RFC-959 form of one of the above commands is rejected
  8900.                  with a 500 or 502 response code, then try the
  8901.                  experimental form; any other response would be passed
  8902.                  to the user.
  8903.  
  8904.  
  8905.  
  8906. Internet Engineering Task Force                                [Page 35]
  8907.  
  8908.  
  8909.  
  8910.  
  8911. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8912.  
  8913.  
  8914.          4.1.3.2  Idle Timeout
  8915.  
  8916.             A Server-FTP process SHOULD have an idle timeout, which will
  8917.             terminate the process and close the control connection if
  8918.             the server is inactive (i.e., no command or data transfer in
  8919.             progress) for a long period of time.  The idle timeout time
  8920.             SHOULD be configurable, and the default should be at least 5
  8921.             minutes.
  8922.  
  8923.             A client FTP process ("User-PI" in RFC-959) will need
  8924.             timeouts on responses only if it is invoked from a program.
  8925.  
  8926.             DISCUSSION:
  8927.                  Without a timeout, a Server-FTP process may be left
  8928.                  pending indefinitely if the corresponding client
  8929.                  crashes without closing the control connection.
  8930.  
  8931.          4.1.3.3  Concurrency of Data and Control
  8932.  
  8933.             DISCUSSION:
  8934.                  The intent of the designers of FTP was that a user
  8935.                  should be able to send a STAT command at any time while
  8936.                  data transfer was in progress and that the server-FTP
  8937.                  would reply immediately with status -- e.g., the number
  8938.                  of bytes transferred so far.  Similarly, an ABOR
  8939.                  command should be possible at any time during a data
  8940.                  transfer.
  8941.  
  8942.                  Unfortunately, some small-machine operating systems
  8943.                  make such concurrent programming difficult, and some
  8944.                  other implementers seek minimal solutions, so some FTP
  8945.                  implementations do not allow concurrent use of the data
  8946.                  and control connections.  Even such a minimal server
  8947.                  must be prepared to accept and defer a STAT or ABOR
  8948.                  command that arrives during data transfer.
  8949.  
  8950.          4.1.3.4  FTP Restart Mechanism
  8951.  
  8952.             The description of the 110 reply on pp. 40-41 of RFC-959 is
  8953.             incorrect; the correct description is as follows.  A restart
  8954.             reply message, sent over the control connection from the
  8955.             receiving FTP to the User-FTP, has the format:
  8956.  
  8957.                 110 MARK ssss = rrrr
  8958.  
  8959.             Here:
  8960.  
  8961.             *    ssss is a text string that appeared in a Restart Marker
  8962.  
  8963.  
  8964.  
  8965. Internet Engineering Task Force                                [Page 36]
  8966.  
  8967.  
  8968.  
  8969.  
  8970. RFC1123                   FILE TRANSFER -- FTP              October 1989
  8971.  
  8972.  
  8973.                  in the data stream and encodes a position in the
  8974.                  sender's file system;
  8975.  
  8976.             *    rrrr encodes the corresponding position in the
  8977.                  receiver's file system.
  8978.  
  8979.             The encoding, which is specific to a particular file system
  8980.             and network implementation, is always generated and
  8981.             interpreted by the same system, either sender or receiver.
  8982.  
  8983.             When an FTP that implements restart receives a Restart
  8984.             Marker in the data stream, it SHOULD force the data to that
  8985.             point to be written to stable storage before encoding the
  8986.             corresponding position rrrr.  An FTP sending Restart Markers
  8987.             MUST NOT assume that 110 replies will be returned
  8988.             synchronously with the data, i.e., it must not await a 110
  8989.             reply before sending more data.
  8990.  
  8991.             Two new reply codes are hereby defined for errors
  8992.             encountered in restarting a transfer:
  8993.  
  8994.               554 Requested action not taken: invalid REST parameter.
  8995.  
  8996.                  A 554 reply may result from a FTP service command that
  8997.                  follows a REST command.  The reply indicates that the
  8998.                  existing file at the Server-FTP cannot be repositioned
  8999.                  as specified in the REST.
  9000.  
  9001.               555 Requested action not taken: type or stru mismatch.
  9002.  
  9003.                  A 555 reply may result from an APPE command or from any
  9004.                  FTP service command following a REST command.  The
  9005.                  reply indicates that there is some mismatch between the
  9006.                  current transfer parameters (type and stru) and the
  9007.                  attributes of the existing file.
  9008.  
  9009.             DISCUSSION:
  9010.                  Note that the FTP Restart mechanism requires that Block
  9011.                  or Compressed mode be used for data transfer, to allow
  9012.                  the Restart Markers to be included within the data
  9013.                  stream.  The frequency of Restart Markers can be low.
  9014.  
  9015.                  Restart Markers mark a place in the data stream, but
  9016.                  the receiver may be performing some transformation on
  9017.                  the data as it is stored into stable storage.  In
  9018.                  general, the receiver's encoding must include any state
  9019.                  information necessary to restart this transformation at
  9020.                  any point of the FTP data stream.  For example, in TYPE
  9021.  
  9022.  
  9023.  
  9024. Internet Engineering Task Force                                [Page 37]
  9025.  
  9026.  
  9027.  
  9028.  
  9029. RFC1123                   FILE TRANSFER -- FTP              October 1989
  9030.  
  9031.  
  9032.                  A transfers, some receiver hosts transform CR LF
  9033.                  sequences into a single LF character on disk.   If a
  9034.                  Restart Marker happens to fall between CR and LF, the
  9035.                  receiver must encode in rrrr that the transfer must be
  9036.                  restarted in a "CR has been seen and discarded" state.
  9037.  
  9038.                  Note that the Restart Marker is required to be encoded
  9039.                  as a string of printable ASCII characters, regardless
  9040.                  of the type of the data.
  9041.  
  9042.                  RFC-959 says that restart information is to be returned
  9043.                  "to the user".  This should not be taken literally.  In
  9044.                  general, the User-FTP should save the restart
  9045.                  information (ssss,rrrr) in stable storage, e.g., append
  9046.                  it to a restart control file.  An empty restart control
  9047.                  file should be created when the transfer first starts
  9048.                  and deleted automatically when the transfer completes
  9049.                  successfully.  It is suggested that this file have a
  9050.                  name derived in an easily-identifiable manner from the
  9051.                  name of the file being transferred and the remote host
  9052.                  name; this is analogous to the means used by many text
  9053.                  editors for naming "backup" files.
  9054.  
  9055.                  There are three cases for FTP restart.
  9056.  
  9057.                  (1)  User-to-Server Transfer
  9058.  
  9059.                       The User-FTP puts Restart Markers <ssss> at
  9060.                       convenient places in the data stream.  When the
  9061.                       Server-FTP receives a Marker, it writes all prior
  9062.                       data to disk, encodes its file system position and
  9063.                       transformation state as rrrr, and returns a "110
  9064.                       MARK ssss = rrrr" reply over the control
  9065.                       connection.  The User-FTP appends the pair
  9066.                       (ssss,rrrr) to its restart control file.
  9067.  
  9068.                       To restart the transfer, the User-FTP fetches the
  9069.                       last (ssss,rrrr) pair from the restart control
  9070.                       file, repositions its local file system and
  9071.                       transformation state using ssss, and sends the
  9072.                       command "REST rrrr" to the Server-FTP.
  9073.  
  9074.                  (2)  Server-to-User Transfer
  9075.  
  9076.                       The Server-FTP puts Restart Markers <ssss> at
  9077.                       convenient places in the data stream.  When the
  9078.                       User-FTP receives a Marker, it writes all prior
  9079.                       data to disk, encodes its file system position and
  9080.  
  9081.  
  9082.  
  9083. Internet Engineering Task Force                                [Page 38]
  9084.  
  9085.  
  9086.  
  9087.  
  9088. RFC1123                   FILE TRANSFER -- FTP              October 1989
  9089.  
  9090.  
  9091.                       transformation state as rrrr, and appends the pair
  9092.                       (rrrr,ssss) to its restart control file.
  9093.  
  9094.                       To restart the transfer, the User-FTP fetches the
  9095.                       last (rrrr,ssss) pair from the restart control
  9096.                       file, repositions its local file system and
  9097.                       transformation state using rrrr, and sends the
  9098.                       command "REST ssss" to the Server-FTP.
  9099.  
  9100.                  (3)  Server-to-Server ("Third-Party") Transfer
  9101.  
  9102.                       The sending Server-FTP puts Restart Markers <ssss>
  9103.                       at convenient places in the data stream.  When it
  9104.                       receives a Marker, the receiving Server-FTP writes
  9105.                       all prior data to disk, encodes its file system
  9106.                       position and transformation state as rrrr, and
  9107.                       sends a "110 MARK ssss = rrrr" reply over the
  9108.                       control connection to the User.  The User-FTP
  9109.                       appends the pair (ssss,rrrr) to its restart
  9110.                       control file.
  9111.  
  9112.                       To restart the transfer, the User-FTP fetches the
  9113.                       last (ssss,rrrr) pair from the restart control
  9114.                       file, sends "REST ssss" to the sending Server-FTP,
  9115.                       and sends "REST rrrr" to the receiving Server-FTP.
  9116.  
  9117.  
  9118.       4.1.4  FTP/USER INTERFACE
  9119.  
  9120.          This section discusses the user interface for a User-FTP
  9121.          program.
  9122.  
  9123.          4.1.4.1  Pathname Specification
  9124.  
  9125.             Since FTP is intended for use in a heterogeneous
  9126.             environment, User-FTP implementations MUST support remote
  9127.             pathnames as arbitrary character strings, so that their form
  9128.             and content are not limited by the conventions of the local
  9129.             operating system.
  9130.  
  9131.             DISCUSSION:
  9132.                  In particular, remote pathnames can be of arbitrary
  9133.                  length, and all the printing ASCII characters as well
  9134.                  as space (0x20) must be allowed.  RFC-959 allows a
  9135.                  pathname to contain any 7-bit ASCII character except CR
  9136.                  or LF.
  9137.  
  9138.  
  9139.  
  9140.  
  9141.  
  9142. Internet Engineering Task Force                                [Page 39]
  9143.  
  9144.  
  9145.  
  9146.  
  9147. RFC1123                   FILE TRANSFER -- FTP              October 1989
  9148.  
  9149.  
  9150.          4.1.4.2  "QUOTE" Command
  9151.  
  9152.             A User-FTP program MUST implement a "QUOTE" command that
  9153.             will pass an arbitrary character string to the server and
  9154.             display all resulting response messages to the user.
  9155.  
  9156.             To make the "QUOTE" command useful, a User-FTP SHOULD send
  9157.             transfer control commands to the server as the user enters
  9158.             them, rather than saving all the commands and sending them
  9159.             to the server only when a data transfer is started.
  9160.  
  9161.             DISCUSSION:
  9162.                  The "QUOTE" command is essential to allow the user to
  9163.                  access servers that require system-specific commands
  9164.                  (e.g., SITE or ALLO), or to invoke new or optional
  9165.                  features that are not implemented by the User-FTP.  For
  9166.                  example, "QUOTE" may be used to specify "TYPE A T" to
  9167.                  send a print file to hosts that require the
  9168.                  distinction, even if the User-FTP does not recognize
  9169.                  that TYPE.
  9170.  
  9171.          4.1.4.3  Displaying Replies to User
  9172.  
  9173.             A User-FTP SHOULD display to the user the full text of all
  9174.             error reply messages it receives.  It SHOULD have a
  9175.             "verbose" mode in which all commands it sends and the full
  9176.             text and reply codes it receives are displayed, for
  9177.             diagnosis of problems.
  9178.  
  9179.          4.1.4.4  Maintaining Synchronization
  9180.  
  9181.             The state machine in a User-FTP SHOULD be forgiving of
  9182.             missing and unexpected reply messages, in order to maintain
  9183.             command synchronization with the server.
  9184.  
  9185.  
  9186.  
  9187.  
  9188.  
  9189.  
  9190.  
  9191.  
  9192.  
  9193.  
  9194.  
  9195.  
  9196.  
  9197.  
  9198.  
  9199.  
  9200.  
  9201. Internet Engineering Task Force                                [Page 40]
  9202.  
  9203.  
  9204.  
  9205.  
  9206. RFC1123                   FILE TRANSFER -- FTP              October 1989
  9207.  
  9208.  
  9209.       4.1.5   FTP REQUIREMENTS SUMMARY
  9210.  
  9211.                                            |               | | | |S| |
  9212.                                            |               | | | |H| |F
  9213.                                            |               | | | |O|M|o
  9214.                                            |               | |S| |U|U|o
  9215.                                            |               | |H| |L|S|t
  9216.                                            |               |M|O| |D|T|n
  9217.                                            |               |U|U|M| | |o
  9218.                                            |               |S|L|A|N|N|t
  9219.                                            |               |T|D|Y|O|O|t
  9220. FEATURE                                    |SECTION        | | | |T|T|e
  9221. -------------------------------------------|---------------|-|-|-|-|-|--
  9222. Implement TYPE T if same as TYPE N         |4.1.2.2        | |x| | | |
  9223. File/Record transform invertible if poss.  |4.1.2.4        | |x| | | |
  9224. User-FTP send PORT cmd for stream mode     |4.1.2.5        | |x| | | |
  9225. Server-FTP implement PASV                  |4.1.2.6        |x| | | | |
  9226.   PASV is per-transfer                     |4.1.2.6        |x| | | | |
  9227. NLST reply usable in RETR cmds             |4.1.2.7        |x| | | | |
  9228. Implied type for LIST and NLST             |4.1.2.7        | |x| | | |
  9229. SITE cmd for non-standard features         |4.1.2.8        | |x| | | |
  9230. STOU cmd return pathname as specified      |4.1.2.9        |x| | | | |
  9231. Use TCP READ boundaries on control conn.   |4.1.2.10       | | | | |x|
  9232.                                            |               | | | | | |
  9233. Server-FTP send only correct reply format  |4.1.2.11       |x| | | | |
  9234. Server-FTP use defined reply code if poss. |4.1.2.11       | |x| | | |
  9235.   New reply code following Section 4.2     |4.1.2.11       | | |x| | |
  9236. User-FTP use only high digit of reply      |4.1.2.11       | |x| | | |
  9237. User-FTP handle multi-line reply lines     |4.1.2.11       |x| | | | |
  9238. User-FTP handle 421 reply specially        |4.1.2.11       | | | |x| |
  9239.                                            |               | | | | | |
  9240. Default data port same IP addr as ctl conn |4.1.2.12       |x| | | | |
  9241. User-FTP send Telnet cmds exc. SYNCH, IP   |4.1.2.12       | | | | |x|
  9242. User-FTP negotiate Telnet options          |4.1.2.12       | | | | |x|
  9243. Server-FTP handle Telnet options           |4.1.2.12       |x| | | | |
  9244. Handle "Experimental" directory cmds       |4.1.3.1        | |x| | | |
  9245. Idle timeout in server-FTP                 |4.1.3.2        | |x| | | |
  9246.     Configurable idle timeout              |4.1.3.2        | |x| | | |
  9247. Receiver checkpoint data at Restart Marker |4.1.3.4        | |x| | | |
  9248. Sender assume 110 replies are synchronous  |4.1.3.4        | | | | |x|
  9249.                                            |               | | | | | |
  9250. Support TYPE:                              |               | | | | | |
  9251.   ASCII - Non-Print (AN)                   |4.1.2.13       |x| | | | |
  9252.   ASCII - Telnet (AT) -- if same as AN     |4.1.2.2        | |x| | | |
  9253.   ASCII - Carriage Control (AC)            |959 3.1.1.5.2  | | |x| | |
  9254.   EBCDIC - (any form)                      |959 3.1.1.2    | | |x| | |
  9255.   IMAGE                                    |4.1.2.1        |x| | | | |
  9256.   LOCAL 8                                  |4.1.2.1        |x| | | | |
  9257.  
  9258.  
  9259.  
  9260. Internet Engineering Task Force                                [Page 41]
  9261.  
  9262.  
  9263.  
  9264.  
  9265. RFC1123                   FILE TRANSFER -- FTP              October 1989
  9266.  
  9267.  
  9268.   LOCAL m                                  |4.1.2.1        | | |x| | |2
  9269.                                            |               | | | | | |
  9270. Support MODE:                              |               | | | | | |
  9271.   Stream                                   |4.1.2.13       |x| | | | |
  9272.   Block                                    |959 3.4.2      | | |x| | |
  9273.                                            |               | | | | | |
  9274. Support STRUCTURE:                         |               | | | | | |
  9275.   File                                     |4.1.2.13       |x| | | | |
  9276.   Record                                   |4.1.2.13       |x| | | | |3
  9277.   Page                                     |4.1.2.3        | | | |x| |
  9278.                                            |               | | | | | |
  9279. Support commands:                          |               | | | | | |
  9280.   USER                                     |4.1.2.13       |x| | | | |
  9281.   PASS                                     |4.1.2.13       |x| | | | |
  9282.   ACCT                                     |4.1.2.13       |x| | | | |
  9283.   CWD                                      |4.1.2.13       |x| | | | |
  9284.   CDUP                                     |4.1.2.13       |x| | | | |
  9285.   SMNT                                     |959 5.3.1      | | |x| | |
  9286.   REIN                                     |959 5.3.1      | | |x| | |
  9287.   QUIT                                     |4.1.2.13       |x| | | | |
  9288.                                            |               | | | | | |
  9289.   PORT                                     |4.1.2.13       |x| | | | |
  9290.   PASV                                     |4.1.2.6        |x| | | | |
  9291.   TYPE                                     |4.1.2.13       |x| | | | |1
  9292.   STRU                                     |4.1.2.13       |x| | | | |1
  9293.   MODE                                     |4.1.2.13       |x| | | | |1
  9294.                                            |               | | | | | |
  9295.   RETR                                     |4.1.2.13       |x| | | | |
  9296.   STOR                                     |4.1.2.13       |x| | | | |
  9297.   STOU                                     |959 5.3.1      | | |x| | |
  9298.   APPE                                     |4.1.2.13       |x| | | | |
  9299.   ALLO                                     |959 5.3.1      | | |x| | |
  9300.   REST                                     |959 5.3.1      | | |x| | |
  9301.   RNFR                                     |4.1.2.13       |x| | | | |
  9302.   RNTO                                     |4.1.2.13       |x| | | | |
  9303.   ABOR                                     |959 5.3.1      | | |x| | |
  9304.   DELE                                     |4.1.2.13       |x| | | | |
  9305.   RMD                                      |4.1.2.13       |x| | | | |
  9306.   MKD                                      |4.1.2.13       |x| | | | |
  9307.   PWD                                      |4.1.2.13       |x| | | | |
  9308.   LIST                                     |4.1.2.13       |x| | | | |
  9309.   NLST                                     |4.1.2.13       |x| | | | |
  9310.   SITE                                     |4.1.2.8        | | |x| | |
  9311.   STAT                                     |4.1.2.13       |x| | | | |
  9312.   SYST                                     |4.1.2.13       |x| | | | |
  9313.   HELP                                     |4.1.2.13       |x| | | | |
  9314.   NOOP                                     |4.1.2.13       |x| | | | |
  9315.                                            |               | | | | | |
  9316.  
  9317.  
  9318.  
  9319. Internet Engineering Task Force                                [Page 42]
  9320.  
  9321.  
  9322.  
  9323.  
  9324. RFC1123                   FILE TRANSFER -- FTP              October 1989
  9325.  
  9326.  
  9327. User Interface:                            |               | | | | | |
  9328.   Arbitrary pathnames                      |4.1.4.1        |x| | | | |
  9329.   Implement "QUOTE" command                |4.1.4.2        |x| | | | |
  9330.   Transfer control commands immediately    |4.1.4.2        | |x| | | |
  9331.   Display error messages to user           |4.1.4.3        | |x| | | |
  9332.     Verbose mode                           |4.1.4.3        | |x| | | |
  9333.   Maintain synchronization with server     |4.1.4.4        | |x| | | |
  9334.  
  9335. Footnotes:
  9336.  
  9337. (1)  For the values shown earlier.
  9338.  
  9339. (2)  Here m is number of bits in a memory word.
  9340.  
  9341. (3)  Required for host with record-structured file system, optional
  9342.      otherwise.
  9343.  
  9344.  
  9345.  
  9346.  
  9347.  
  9348.  
  9349.  
  9350.  
  9351.  
  9352.  
  9353.  
  9354.  
  9355.  
  9356.  
  9357.  
  9358.  
  9359.  
  9360.  
  9361.  
  9362.  
  9363.  
  9364.  
  9365.  
  9366.  
  9367.  
  9368.  
  9369.  
  9370.  
  9371.  
  9372.  
  9373.  
  9374.  
  9375.  
  9376.  
  9377.  
  9378. Internet Engineering Task Force                                [Page 43]
  9379.  
  9380.  
  9381.  
  9382.  
  9383. RFC1123                  FILE TRANSFER -- TFTP              October 1989
  9384.  
  9385.  
  9386.    4.2  TRIVIAL FILE TRANSFER PROTOCOL -- TFTP
  9387.  
  9388.       4.2.1  INTRODUCTION
  9389.  
  9390.          The Trivial File Transfer Protocol TFTP is defined in RFC-783
  9391.          [TFTP:1].
  9392.  
  9393.          TFTP provides its own reliable delivery with UDP as its
  9394.          transport protocol, using a simple stop-and-wait acknowledgment
  9395.          system.  Since TFTP has an effective window of only one 512
  9396.          octet segment, it can provide good performance only over paths
  9397.          that have a small delay*bandwidth product.  The TFTP file
  9398.          interface is very simple, providing no access control or
  9399.          security.
  9400.  
  9401.          TFTP's most important application is bootstrapping a host over
  9402.          a local network, since it is simple and small enough to be
  9403.          easily implemented in EPROM [BOOT:1, BOOT:2].  Vendors are
  9404.          urged to support TFTP for booting.
  9405.  
  9406.       4.2.2  PROTOCOL WALK-THROUGH
  9407.  
  9408.          The TFTP specification [TFTP:1] is written in an open style,
  9409.          and does not fully specify many parts of the protocol.
  9410.  
  9411.          4.2.2.1  Transfer Modes: RFC-783, Page 3
  9412.  
  9413.             The transfer mode "mail" SHOULD NOT be supported.
  9414.  
  9415.          4.2.2.2  UDP Header: RFC-783, Page 17
  9416.  
  9417.             The Length field of a UDP header is incorrectly defined; it
  9418.             includes the UDP header length (8).
  9419.  
  9420.       4.2.3  SPECIFIC ISSUES
  9421.  
  9422.          4.2.3.1  Sorcerer's Apprentice Syndrome
  9423.  
  9424.             There is a serious bug, known as the "Sorcerer's Apprentice
  9425.             Syndrome," in the protocol specification.  While it does not
  9426.             cause incorrect operation of the transfer (the file will
  9427.             always be transferred correctly if the transfer completes),
  9428.             this bug may cause excessive retransmission, which may cause
  9429.             the transfer to time out.
  9430.  
  9431.             Implementations MUST contain the fix for this problem: the
  9432.             sender (i.e., the side originating the DATA packets) must
  9433.             never resend the current DATA packet on receipt of a
  9434.  
  9435.  
  9436.  
  9437. Internet Engineering Task Force                                [Page 44]
  9438.  
  9439.  
  9440.  
  9441.  
  9442. RFC1123                  FILE TRANSFER -- TFTP              October 1989
  9443.  
  9444.  
  9445.             duplicate ACK.
  9446.  
  9447.             DISCUSSION:
  9448.                  The bug is caused by the protocol rule that either
  9449.                  side, on receiving an old duplicate datagram, may
  9450.                  resend the current datagram.  If a packet is delayed in
  9451.                  the network but later successfully delivered after
  9452.                  either side has timed out and retransmitted a packet, a
  9453.                  duplicate copy of the response may be generated.  If
  9454.                  the other side responds to this duplicate with a
  9455.                  duplicate of its own, then every datagram will be sent
  9456.                  in duplicate for the remainder of the transfer (unless
  9457.                  a datagram is lost, breaking the repetition).  Worse
  9458.                  yet, since the delay is often caused by congestion,
  9459.                  this duplicate transmission will usually causes more
  9460.                  congestion, leading to more delayed packets, etc.
  9461.  
  9462.                  The following example may help to clarify this problem.
  9463.  
  9464.                      TFTP A                  TFTP B
  9465.  
  9466.                  (1)  Receive ACK X-1
  9467.                       Send DATA X
  9468.                  (2)                          Receive DATA X
  9469.                                               Send ACK X
  9470.                         (ACK X is delayed in network,
  9471.                          and  A times out):
  9472.                  (3)  Retransmit DATA X
  9473.  
  9474.                  (4)                          Receive DATA X again
  9475.                                               Send ACK X again
  9476.                  (5)  Receive (delayed) ACK X
  9477.                       Send DATA X+1
  9478.                  (6)                          Receive DATA X+1
  9479.                                               Send ACK X+1
  9480.                  (7)  Receive ACK X again
  9481.                       Send DATA X+1 again
  9482.                  (8)                          Receive DATA X+1 again
  9483.                                               Send ACK X+1 again
  9484.                  (9)  Receive ACK X+1
  9485.                       Send DATA X+2
  9486.                  (10)                         Receive DATA X+2
  9487.                                               Send ACK X+3
  9488.                  (11) Receive ACK X+1 again
  9489.                       Send DATA X+2 again
  9490.                  (12)                         Receive DATA X+2 again
  9491.                                               Send ACK X+3 again
  9492.  
  9493.  
  9494.  
  9495.  
  9496. Internet Engineering Task Force                                [Page 45]
  9497.  
  9498.  
  9499.  
  9500.  
  9501. RFC1123                  FILE TRANSFER -- TFTP              October 1989
  9502.  
  9503.  
  9504.                  Notice that once the delayed ACK arrives, the protocol
  9505.                  settles down to duplicate all further packets
  9506.                  (sequences 5-8 and 9-12).  The problem is caused not by
  9507.                  either side timing out, but by both sides
  9508.                  retransmitting the current packet when they receive a
  9509.                  duplicate.
  9510.  
  9511.                  The fix is to break the retransmission loop, as
  9512.                  indicated above.  This is analogous to the behavior of
  9513.                  TCP.  It is then possible to remove the retransmission
  9514.                  timer on the receiver, since the resent ACK will never
  9515.                  cause any action; this is a useful simplification where
  9516.                  TFTP is used in a bootstrap program.  It is OK to allow
  9517.                  the timer to remain, and it may be helpful if the
  9518.                  retransmitted ACK replaces one that was genuinely lost
  9519.                  in the network.  The sender still requires a retransmit
  9520.                  timer, of course.
  9521.  
  9522.          4.2.3.2  Timeout Algorithms
  9523.  
  9524.             A TFTP implementation MUST use an adaptive timeout.
  9525.  
  9526.             IMPLEMENTATION:
  9527.                  TCP retransmission algorithms provide a useful base to
  9528.                  work from.  At least an exponential backoff of
  9529.                  retransmission timeout is necessary.
  9530.  
  9531.          4.2.3.3  Extensions
  9532.  
  9533.             A variety of non-standard extensions have been made to TFTP,
  9534.             including additional transfer modes and a secure operation
  9535.             mode (with passwords).  None of these have been
  9536.             standardized.
  9537.  
  9538.          4.2.3.4  Access Control
  9539.  
  9540.             A server TFTP implementation SHOULD include some
  9541.             configurable access control over what pathnames are allowed
  9542.             in TFTP operations.
  9543.  
  9544.          4.2.3.5  Broadcast Request
  9545.  
  9546.             A TFTP request directed to a broadcast address SHOULD be
  9547.             silently ignored.
  9548.  
  9549.             DISCUSSION:
  9550.                  Due to the weak access control capability of TFTP,
  9551.                  directed broadcasts of TFTP requests to random networks
  9552.  
  9553.  
  9554.  
  9555. Internet Engineering Task Force                                [Page 46]
  9556.  
  9557.  
  9558.  
  9559.  
  9560. RFC1123                  FILE TRANSFER -- TFTP              October 1989
  9561.  
  9562.  
  9563.                  could create a significant security hole.
  9564.  
  9565.       4.2.4  TFTP REQUIREMENTS SUMMARY
  9566.  
  9567.                                                  |        | | | |S| |
  9568.                                                  |        | | | |H| |F
  9569.                                                  |        | | | |O|M|o
  9570.                                                  |        | |S| |U|U|o
  9571.                                                  |        | |H| |L|S|t
  9572.                                                  |        |M|O| |D|T|n
  9573.                                                  |        |U|U|M| | |o
  9574.                                                  |        |S|L|A|N|N|t
  9575.                                                  |        |T|D|Y|O|O|t
  9576. FEATURE                                          |SECTION | | | |T|T|e
  9577. -------------------------------------------------|--------|-|-|-|-|-|--
  9578. Fix Sorcerer's Apprentice Syndrome               |4.2.3.1 |x| | | | |
  9579. Transfer modes:                                  |        | | | | | |
  9580.   netascii                                       |RFC-783 |x| | | | |
  9581.   octet                                          |RFC-783 |x| | | | |
  9582.   mail                                           |4.2.2.1 | | | |x| |
  9583.   extensions                                     |4.2.3.3 | | |x| | |
  9584. Use adaptive timeout                             |4.2.3.2 |x| | | | |
  9585. Configurable access control                      |4.2.3.4 | |x| | | |
  9586. Silently ignore broadcast request                |4.2.3.5 | |x| | | |
  9587. -------------------------------------------------|--------|-|-|-|-|-|--
  9588. -------------------------------------------------|--------|-|-|-|-|-|--
  9589.  
  9590.  
  9591.  
  9592.  
  9593.  
  9594.  
  9595.  
  9596.  
  9597.  
  9598.  
  9599.  
  9600.  
  9601.  
  9602.  
  9603.  
  9604.  
  9605.  
  9606.  
  9607.  
  9608.  
  9609.  
  9610.  
  9611.  
  9612.  
  9613.  
  9614. Internet Engineering Task Force                                [Page 47]
  9615.  
  9616.  
  9617.  
  9618.  
  9619. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  9620.  
  9621.  
  9622. 5.  ELECTRONIC MAIL -- SMTP and RFC-822
  9623.  
  9624.    5.1  INTRODUCTION
  9625.  
  9626.       In the TCP/IP protocol suite, electronic mail in a format
  9627.       specified in RFC-822 [SMTP:2] is transmitted using the Simple Mail
  9628.       Transfer Protocol (SMTP) defined in RFC-821 [SMTP:1].
  9629.  
  9630.       While SMTP has remained unchanged over the years, the Internet
  9631.       community has made several changes in the way SMTP is used.  In
  9632.       particular, the conversion to the Domain Name System (DNS) has
  9633.       caused changes in address formats and in mail routing.  In this
  9634.       section, we assume familiarity with the concepts and terminology
  9635.       of the DNS, whose requirements are given in Section 6.1.
  9636.  
  9637.       RFC-822 specifies the Internet standard format for electronic mail
  9638.       messages.  RFC-822 supercedes an older standard, RFC-733, that may
  9639.       still be in use in a few places, although it is obsolete.  The two
  9640.       formats are sometimes referred to simply by number ("822" and
  9641.       "733").
  9642.  
  9643.       RFC-822 is used in some non-Internet mail environments with
  9644.       different mail transfer protocols than SMTP, and SMTP has also
  9645.       been adapted for use in some non-Internet environments.  Note that
  9646.       this document presents the rules for the use of SMTP and RFC-822
  9647.       for the Internet environment only; other mail environments that
  9648.       use these protocols may be expected to have their own rules.
  9649.  
  9650.    5.2  PROTOCOL WALK-THROUGH
  9651.  
  9652.       This section covers both RFC-821 and RFC-822.
  9653.  
  9654.       The SMTP specification in RFC-821 is clear and contains numerous
  9655.       examples, so implementors should not find it difficult to
  9656.       understand.  This section simply updates or annotates portions of
  9657.       RFC-821 to conform with current usage.
  9658.  
  9659.       RFC-822 is a long and dense document, defining a rich syntax.
  9660.       Unfortunately, incomplete or defective implementations of RFC-822
  9661.       are common.  In fact, nearly all of the many formats of RFC-822
  9662.       are actually used, so an implementation generally needs to
  9663.       recognize and correctly interpret all of the RFC-822 syntax.
  9664.  
  9665.       5.2.1  The SMTP Model: RFC-821 Section 2
  9666.  
  9667.          DISCUSSION:
  9668.               Mail is sent by a series of request/response transactions
  9669.               between a client, the "sender-SMTP," and a server, the
  9670.  
  9671.  
  9672.  
  9673. Internet Engineering Task Force                                [Page 48]
  9674.  
  9675.  
  9676.  
  9677.  
  9678. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  9679.  
  9680.  
  9681.               "receiver-SMTP".  These transactions pass (1) the message
  9682.               proper, which is composed of header and body, and (2) SMTP
  9683.               source and destination addresses, referred to as the
  9684.               "envelope".
  9685.  
  9686.               The SMTP programs are analogous to Message Transfer Agents
  9687.               (MTAs) of X.400.  There will be another level of protocol
  9688.               software, closer to the end user, that is responsible for
  9689.               composing and analyzing RFC-822 message headers; this
  9690.               component is known as the "User Agent" in X.400, and we
  9691.               use that term in this document.  There is a clear logical
  9692.               distinction between the User Agent and the SMTP
  9693.               implementation, since they operate on different levels of
  9694.               protocol.  Note, however, that this distinction is may not
  9695.               be exactly reflected the structure of typical
  9696.               implementations of Internet mail.  Often there is a
  9697.               program known as the "mailer" that implements SMTP and
  9698.               also some of the User Agent functions; the rest of the
  9699.               User Agent functions are included in a user interface used
  9700.               for entering and reading mail.
  9701.  
  9702.               The SMTP envelope is constructed at the originating site,
  9703.               typically by the User Agent when the message is first
  9704.               queued for the Sender-SMTP program.  The envelope
  9705.               addresses may be derived from information in the message
  9706.               header, supplied by the user interface (e.g., to implement
  9707.               a bcc: request), or derived from local configuration
  9708.               information (e.g., expansion of a mailing list).  The SMTP
  9709.               envelope cannot in general be re-derived from the header
  9710.               at a later stage in message delivery, so the envelope is
  9711.               transmitted separately from the message itself using the
  9712.               MAIL and RCPT commands of SMTP.
  9713.  
  9714.               The text of RFC-821 suggests that mail is to be delivered
  9715.               to an individual user at a host.  With the advent of the
  9716.               domain system and of mail routing using mail-exchange (MX)
  9717.               resource records, implementors should now think of
  9718.               delivering mail to a user at a domain, which may or may
  9719.               not be a particular host.  This DOES NOT change the fact
  9720.               that SMTP is a host-to-host mail exchange protocol.
  9721.  
  9722.       5.2.2  Canonicalization: RFC-821 Section 3.1
  9723.  
  9724.          The domain names that a Sender-SMTP sends in MAIL and RCPT
  9725.          commands MUST have been  "canonicalized," i.e., they must be
  9726.          fully-qualified principal names or domain literals, not
  9727.          nicknames or domain abbreviations.  A canonicalized name either
  9728.          identifies a host directly or is an MX name; it cannot be a
  9729.  
  9730.  
  9731.  
  9732. Internet Engineering Task Force                                [Page 49]
  9733.  
  9734.  
  9735.  
  9736.  
  9737. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  9738.  
  9739.  
  9740.          CNAME.
  9741.  
  9742.       5.2.3  VRFY and EXPN Commands: RFC-821 Section 3.3
  9743.  
  9744.          A receiver-SMTP MUST implement VRFY and SHOULD implement EXPN
  9745.          (this requirement overrides RFC-821).  However, there MAY be
  9746.          configuration information to disable VRFY and EXPN in a
  9747.          particular installation; this might even allow EXPN to be
  9748.          disabled for selected lists.
  9749.  
  9750.          A new reply code is defined for the VRFY command:
  9751.  
  9752.               252 Cannot VRFY user (e.g., info is not local), but will
  9753.                   take message for this user and attempt delivery.
  9754.  
  9755.          DISCUSSION:
  9756.               SMTP users and administrators make regular use of these
  9757.               commands for diagnosing mail delivery problems.  With the
  9758.               increasing use of multi-level mailing list expansion
  9759.               (sometimes more than two levels), EXPN has been
  9760.               increasingly important for diagnosing inadvertent mail
  9761.               loops.  On the other hand,  some feel that EXPN represents
  9762.               a significant privacy, and perhaps even a security,
  9763.               exposure.
  9764.  
  9765.       5.2.4  SEND, SOML, and SAML Commands: RFC-821 Section 3.4
  9766.  
  9767.          An SMTP MAY implement the commands to send a message to a
  9768.          user's terminal: SEND, SOML, and SAML.
  9769.  
  9770.          DISCUSSION:
  9771.               It has been suggested that the use of mail relaying
  9772.               through an MX record is inconsistent with the intent of
  9773.               SEND to deliver a message immediately and directly to a
  9774.               user's terminal.  However, an SMTP receiver that is unable
  9775.               to write directly to the user terminal can return a "251
  9776.               User Not Local" reply to the RCPT following a SEND, to
  9777.               inform the originator of possibly deferred delivery.
  9778.  
  9779.       5.2.5  HELO Command: RFC-821 Section 3.5
  9780.  
  9781.          The sender-SMTP MUST ensure that the <domain> parameter in a
  9782.          HELO command is a valid principal host domain name for the
  9783.          client host.  As a result, the receiver-SMTP will not have to
  9784.          perform MX resolution on this name in order to validate the
  9785.          HELO parameter.
  9786.  
  9787.          The HELO receiver MAY verify that the HELO parameter really
  9788.  
  9789.  
  9790.  
  9791. Internet Engineering Task Force                                [Page 50]
  9792.  
  9793.  
  9794.  
  9795.  
  9796. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  9797.  
  9798.  
  9799.          corresponds to the IP address of the sender.  However, the
  9800.          receiver MUST NOT refuse to accept a message, even if the
  9801.          sender's HELO command fails verification.
  9802.  
  9803.          DISCUSSION:
  9804.               Verifying the HELO parameter requires a domain name lookup
  9805.               and may therefore take considerable time.  An alternative
  9806.               tool for tracking bogus mail sources is suggested below
  9807.               (see "DATA Command").
  9808.  
  9809.               Note also that the HELO argument is still required to have
  9810.               valid <domain> syntax, since it will appear in a Received:
  9811.               line; otherwise, a 501 error is to be sent.
  9812.  
  9813.          IMPLEMENTATION:
  9814.               When HELO parameter validation fails, a suggested
  9815.               procedure is to insert a note about the unknown
  9816.               authenticity of the sender into the message header (e.g.,
  9817.               in the "Received:"  line).
  9818.  
  9819.       5.2.6  Mail Relay: RFC-821 Section 3.6
  9820.  
  9821.          We distinguish three types of mail (store-and-) forwarding:
  9822.  
  9823.          (1)  A simple forwarder or "mail exchanger" forwards a message
  9824.               using private knowledge about the recipient; see section
  9825.               3.2 of RFC-821.
  9826.  
  9827.          (2)  An SMTP mail "relay" forwards a message within an SMTP
  9828.               mail environment as the result of an explicit source route
  9829.               (as defined in section 3.6 of RFC-821).  The SMTP relay
  9830.               function uses the "@...:" form of source route from RFC-
  9831.               822 (see Section 5.2.19 below).
  9832.  
  9833.          (3)  A mail "gateway" passes a message between different
  9834.               environments.  The rules for mail gateways are discussed
  9835.               below in Section 5.3.7.
  9836.  
  9837.          An Internet host that is forwarding a message but is not a
  9838.          gateway to a different mail environment (i.e., it falls under
  9839.          (1) or (2)) SHOULD NOT alter any existing header fields,
  9840.          although the host will add an appropriate Received: line as
  9841.          required in Section 5.2.8.
  9842.  
  9843.          A Sender-SMTP SHOULD NOT send a RCPT TO: command containing an
  9844.          explicit source route using the "@...:" address form.  Thus,
  9845.          the relay function defined in section  3.6 of RFC-821 should
  9846.          not be used.
  9847.  
  9848.  
  9849.  
  9850. Internet Engineering Task Force                                [Page 51]
  9851.  
  9852.  
  9853.  
  9854.  
  9855. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  9856.  
  9857.  
  9858.          DISCUSSION:
  9859.               The intent is to discourage all source routing and to
  9860.               abolish explicit source routing for mail delivery within
  9861.               the Internet environment.  Source-routing is unnecessary;
  9862.               the simple target address "user@domain" should always
  9863.               suffice.  This is the result of an explicit architectural
  9864.               decision to use universal naming rather than source
  9865.               routing for mail.  Thus, SMTP provides end-to-end
  9866.               connectivity, and the DNS provides globally-unique,
  9867.               location-independent names.  MX records handle the major
  9868.               case where source routing might otherwise be needed.
  9869.  
  9870.          A receiver-SMTP MUST accept the explicit source route syntax in
  9871.          the envelope, but it MAY implement the relay function as
  9872.          defined in section 3.6 of RFC-821.  If it does not implement
  9873.          the relay function, it SHOULD attempt to deliver the message
  9874.          directly to the host to the right of the right-most "@" sign.
  9875.  
  9876.          DISCUSSION:
  9877.               For example, suppose a host that does not implement the
  9878.               relay function receives a message with the SMTP command:
  9879.               "RCPT TO:<@ALPHA,@BETA:joe@GAMMA>", where ALPHA, BETA, and
  9880.               GAMMA represent domain names.  Rather than immediately
  9881.               refusing the message with a 550 error reply as suggested
  9882.               on page 20 of RFC-821, the host should try to forward the
  9883.               message to GAMMA directly, using: "RCPT TO:<joe@GAMMA>".
  9884.               Since this host does not support relaying, it is not
  9885.               required to update the reverse path.
  9886.  
  9887.               Some have suggested that source routing may be needed
  9888.               occasionally for manually routing mail around failures;
  9889.               however, the reality and importance of this need is
  9890.               controversial.  The use of explicit SMTP mail relaying for
  9891.               this purpose is discouraged, and in fact it may not be
  9892.               successful, as many host systems do not support it.  Some
  9893.               have used the "%-hack" (see Section 5.2.16) for this
  9894.               purpose.
  9895.  
  9896.       5.2.7  RCPT Command: RFC-821 Section 4.1.1
  9897.  
  9898.          A host that supports a receiver-SMTP MUST support the reserved
  9899.          mailbox "Postmaster".
  9900.  
  9901.          The receiver-SMTP MAY verify RCPT parameters as they arrive;
  9902.          however, RCPT responses MUST NOT be delayed beyond a reasonable
  9903.          time (see Section 5.3.2).
  9904.  
  9905.          Therefore, a "250 OK" response to a RCPT does not necessarily
  9906.  
  9907.  
  9908.  
  9909. Internet Engineering Task Force                                [Page 52]
  9910.  
  9911.  
  9912.  
  9913.  
  9914. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  9915.  
  9916.  
  9917.          imply that the delivery address(es) are valid.  Errors found
  9918.          after message acceptance will be reported by mailing a
  9919.          notification message to an appropriate address (see Section
  9920.          5.3.3).
  9921.  
  9922.          DISCUSSION:
  9923.               The set of conditions under which a RCPT parameter can be
  9924.               validated immediately is an engineering design choice.
  9925.               Reporting destination mailbox errors to the Sender-SMTP
  9926.               before mail is transferred is generally desirable to save
  9927.               time and network bandwidth, but this advantage is lost if
  9928.               RCPT verification is lengthy.
  9929.  
  9930.               For example, the receiver can verify immediately any
  9931.               simple local reference, such as a single locally-
  9932.               registered mailbox.  On the other hand, the "reasonable
  9933.               time" limitation generally implies deferring verification
  9934.               of a mailing list until after the message has been
  9935.               transferred and accepted, since verifying a large mailing
  9936.               list can take a very long time.  An implementation might
  9937.               or might not choose to defer validation of addresses that
  9938.               are non-local and therefore require a DNS lookup.  If a
  9939.               DNS lookup is performed but a soft domain system error
  9940.               (e.g., timeout) occurs, validity must be assumed.
  9941.  
  9942.       5.2.8  DATA Command: RFC-821 Section 4.1.1
  9943.  
  9944.          Every receiver-SMTP (not just one that "accepts a message for
  9945.          relaying or for final delivery" [SMTP:1]) MUST insert a
  9946.          "Received:" line at the beginning of a message.  In this line,
  9947.          called a "time stamp line" in RFC-821:
  9948.  
  9949.          *    The FROM field SHOULD contain both (1) the name of the
  9950.               source host as presented in the HELO command and (2) a
  9951.               domain literal containing the IP address of the source,
  9952.               determined from the TCP connection.
  9953.  
  9954.          *    The ID field MAY contain an "@" as suggested in RFC-822,
  9955.               but this is not required.
  9956.  
  9957.          *    The FOR field MAY contain a list of <path> entries when
  9958.               multiple RCPT commands have been given.
  9959.  
  9960.  
  9961.          An Internet mail program MUST NOT change a Received: line that
  9962.          was previously added to the message header.
  9963.  
  9964.  
  9965.  
  9966.  
  9967.  
  9968. Internet Engineering Task Force                                [Page 53]
  9969.  
  9970.  
  9971.  
  9972.  
  9973. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  9974.  
  9975.  
  9976.          DISCUSSION:
  9977.               Including both the source host and the IP source address
  9978.               in the Received: line may provide enough information for
  9979.               tracking illicit mail sources and eliminate a need to
  9980.               explicitly verify the HELO parameter.
  9981.  
  9982.               Received: lines are primarily intended for humans tracing
  9983.               mail routes, primarily of diagnosis of faults.  See also
  9984.               the discussion under 5.3.7.
  9985.  
  9986.          When the receiver-SMTP makes "final delivery" of a message,
  9987.          then it MUST pass the MAIL FROM: address from the SMTP envelope
  9988.          with the message, for use if an error notification message must
  9989.          be sent later (see Section 5.3.3).  There is an analogous
  9990.          requirement when gatewaying from the Internet into a different
  9991.          mail environment; see Section 5.3.7.
  9992.  
  9993.          DISCUSSION:
  9994.               Note that the final reply to the DATA command depends only
  9995.               upon the successful transfer and storage of the message.
  9996.               Any problem with the destination address(es) must either
  9997.               (1) have been reported in an SMTP error reply to the RCPT
  9998.               command(s), or (2) be reported in a later error message
  9999.               mailed to the originator.
  10000.  
  10001.          IMPLEMENTATION:
  10002.               The MAIL FROM: information may be passed as a parameter or
  10003.               in a Return-Path: line inserted at the beginning of the
  10004.               message.
  10005.  
  10006.       5.2.9  Command Syntax: RFC-821 Section 4.1.2
  10007.  
  10008.          The syntax shown in RFC-821 for the MAIL FROM: command omits
  10009.          the case of an empty path:  "MAIL FROM: <>" (see RFC-821 Page
  10010.          15).  An empty reverse path MUST be supported.
  10011.  
  10012.       5.2.10  SMTP Replies:  RFC-821 Section 4.2
  10013.  
  10014.          A receiver-SMTP SHOULD send only the reply codes listed in
  10015.          section 4.2.2 of RFC-821 or in this document.  A receiver-SMTP
  10016.          SHOULD use the text shown in examples in RFC-821 whenever
  10017.          appropriate.
  10018.  
  10019.          A sender-SMTP MUST determine its actions only by the reply
  10020.          code, not by the text (except for 251 and 551 replies); any
  10021.          text, including no text at all, must be acceptable.  The space
  10022.          (blank) following the reply code is considered part of the
  10023.          text.  Whenever possible, a sender-SMTP SHOULD test only the
  10024.  
  10025.  
  10026.  
  10027. Internet Engineering Task Force                                [Page 54]
  10028.  
  10029.  
  10030.  
  10031.  
  10032. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10033.  
  10034.  
  10035.          first digit of the reply code, as specified in Appendix E of
  10036.          RFC-821.
  10037.  
  10038.          DISCUSSION:
  10039.               Interoperability problems have arisen with SMTP systems
  10040.               using reply codes that are not listed explicitly in RFC-
  10041.               821 Section 4.3 but are legal according to the theory of
  10042.               reply codes explained in Appendix E.
  10043.  
  10044.       5.2.11  Transparency: RFC-821 Section 4.5.2
  10045.  
  10046.          Implementors MUST be sure that their mail systems always add
  10047.          and delete periods to ensure message transparency.
  10048.  
  10049.       5.2.12  WKS Use in MX Processing: RFC-974, p. 5
  10050.  
  10051.          RFC-974 [SMTP:3] recommended that the domain system be queried
  10052.          for WKS ("Well-Known Service") records, to verify that each
  10053.          proposed mail target does support SMTP.  Later experience has
  10054.          shown that WKS is not widely supported, so the WKS step in MX
  10055.          processing SHOULD NOT be used.
  10056.  
  10057.       The following are notes on RFC-822, organized by section of that
  10058.       document.
  10059.  
  10060.       5.2.13  RFC-822 Message Specification: RFC-822 Section 4
  10061.  
  10062.          The syntax shown for the Return-path line omits the possibility
  10063.          of a null return path, which is used to prevent looping of
  10064.          error notifications (see Section 5.3.3).  The complete syntax
  10065.          is:
  10066.  
  10067.              return = "Return-path"  ":" route-addr
  10068.                     / "Return-path"  ":" "<" ">"
  10069.  
  10070.          The set of optional header fields is hereby expanded to include
  10071.          the Content-Type field defined in RFC-1049 [SMTP:7].  This
  10072.          field "allows mail reading systems to automatically identify
  10073.          the type of a structured message body and to process it for
  10074.          display accordingly".  [SMTP:7]  A User Agent MAY support this
  10075.          field.
  10076.  
  10077.       5.2.14  RFC-822 Date and Time Specification: RFC-822 Section 5
  10078.  
  10079.          The syntax for the date is hereby changed to:
  10080.  
  10081.             date = 1*2DIGIT month 2*4DIGIT
  10082.  
  10083.  
  10084.  
  10085.  
  10086. Internet Engineering Task Force                                [Page 55]
  10087.  
  10088.  
  10089.  
  10090.  
  10091. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10092.  
  10093.  
  10094.          All mail software SHOULD use 4-digit years in dates, to ease
  10095.          the transition to the next century.
  10096.  
  10097.          There is a strong trend towards the use of numeric timezone
  10098.          indicators, and implementations SHOULD use numeric timezones
  10099.          instead of timezone names.  However, all implementations MUST
  10100.          accept either notation.  If timezone names are used, they MUST
  10101.          be exactly as defined in RFC-822.
  10102.  
  10103.          The military time zones are specified incorrectly in RFC-822:
  10104.          they count the wrong way from UT (the signs are reversed).  As
  10105.          a result, military time zones in RFC-822 headers carry no
  10106.          information.
  10107.  
  10108.          Finally, note that there is a typo in the definition of "zone"
  10109.          in the syntax summary of appendix D; the correct definition
  10110.          occurs in Section 3 of RFC-822.
  10111.  
  10112.       5.2.15  RFC-822 Syntax Change: RFC-822 Section 6.1
  10113.  
  10114.          The syntactic definition of "mailbox" in RFC-822 is hereby
  10115.          changed to:
  10116.  
  10117.             mailbox =  addr-spec            ; simple address
  10118.                     / [phrase] route-addr   ; name & addr-spec
  10119.  
  10120.          That is, the phrase preceding a route address is now OPTIONAL.
  10121.          This change makes the following header field legal, for
  10122.          example:
  10123.  
  10124.              From: <craig@nnsc.nsf.net>
  10125.  
  10126.       5.2.16  RFC-822  Local-part: RFC-822 Section 6.2
  10127.  
  10128.          The basic mailbox address specification has the form: "local-
  10129.          part@domain".  Here "local-part", sometimes called the "left-
  10130.          hand side" of the address, is domain-dependent.
  10131.  
  10132.          A host that is forwarding the message but is not the
  10133.          destination host implied by the right-hand side "domain" MUST
  10134.          NOT interpret or modify the "local-part" of the address.
  10135.  
  10136.          When mail is to be gatewayed from the Internet mail environment
  10137.          into a foreign mail environment (see Section 5.3.7), routing
  10138.          information for that foreign environment MAY be embedded within
  10139.          the "local-part" of the address.  The gateway will then
  10140.          interpret this local part appropriately for the foreign mail
  10141.          environment.
  10142.  
  10143.  
  10144.  
  10145. Internet Engineering Task Force                                [Page 56]
  10146.  
  10147.  
  10148.  
  10149.  
  10150. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10151.  
  10152.  
  10153.          DISCUSSION:
  10154.               Although source routes are discouraged within the Internet
  10155.               (see Section 5.2.6), there are non-Internet mail
  10156.               environments whose delivery mechanisms do depend upon
  10157.               source routes.  Source routes for extra-Internet
  10158.               environments can generally be buried in the "local-part"
  10159.               of the address (see Section 5.2.16) while mail traverses
  10160.               the Internet.  When the mail reaches the appropriate
  10161.               Internet mail gateway, the gateway will interpret the
  10162.               local-part and build the necessary address or route for
  10163.               the target mail environment.
  10164.  
  10165.               For example, an Internet host might send mail to:
  10166.               "a!b!c!user@gateway-domain".  The complex local part
  10167.               "a!b!c!user" would be uninterpreted within the Internet
  10168.               domain, but could be parsed and understood by the
  10169.               specified mail gateway.
  10170.  
  10171.               An embedded source route is sometimes encoded in the
  10172.               "local-part" using "%" as a right-binding routing
  10173.               operator.  For example, in:
  10174.  
  10175.                  user%domain%relay3%relay2@relay1
  10176.  
  10177.               the "%" convention implies that the mail is to be routed
  10178.               from "relay1" through "relay2", "relay3", and finally to
  10179.               "user" at "domain".  This is commonly known as the "%-
  10180.               hack".  It is suggested that "%" have lower precedence
  10181.               than any other routing operator (e.g., "!") hidden in the
  10182.               local-part; for example, "a!b%c" would be interpreted as
  10183.               "(a!b)%c".
  10184.  
  10185.               Only the target host (in this case, "relay1") is permitted
  10186.               to analyze the local-part "user%domain%relay3%relay2".
  10187.  
  10188.       5.2.17  Domain Literals: RFC-822 Section 6.2.3
  10189.  
  10190.          A mailer MUST be able to accept and parse an Internet domain
  10191.          literal whose content ("dtext"; see RFC-822) is a dotted-
  10192.          decimal host address.  This satisfies the requirement of
  10193.          Section 2.1 for the case of mail.
  10194.  
  10195.          An SMTP MUST accept and recognize a domain literal for any of
  10196.          its own IP addresses.
  10197.  
  10198.  
  10199.  
  10200.  
  10201.  
  10202.  
  10203.  
  10204. Internet Engineering Task Force                                [Page 57]
  10205.  
  10206.  
  10207.  
  10208.  
  10209. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10210.  
  10211.  
  10212.       5.2.18  Common Address Formatting Errors: RFC-822 Section 6.1
  10213.  
  10214.          Errors in formatting or parsing 822 addresses are unfortunately
  10215.          common.  This section mentions only the most common errors.  A
  10216.          User Agent MUST accept all valid RFC-822 address formats, and
  10217.          MUST NOT generate illegal address syntax.
  10218.  
  10219.          o    A common error is to leave out the semicolon after a group
  10220.               identifier.
  10221.  
  10222.          o    Some systems fail to fully-qualify domain names in
  10223.               messages they generate.  The right-hand side of an "@"
  10224.               sign in a header address field MUST be a fully-qualified
  10225.               domain name.
  10226.  
  10227.               For example, some systems fail to fully-qualify the From:
  10228.               address; this prevents a "reply" command in the user
  10229.               interface from automatically constructing a return
  10230.               address.
  10231.  
  10232.               DISCUSSION:
  10233.                    Although RFC-822 allows the local use of abbreviated
  10234.                    domain names within a domain, the application of
  10235.                    RFC-822 in Internet mail does not allow this.  The
  10236.                    intent is that an Internet host must not send an SMTP
  10237.                    message header containing an abbreviated domain name
  10238.                    in an address field.  This allows the address fields
  10239.                    of the header to be passed without alteration across
  10240.                    the Internet, as required in Section 5.2.6.
  10241.  
  10242.          o    Some systems mis-parse multiple-hop explicit source routes
  10243.               such as:
  10244.  
  10245.                   @relay1,@relay2,@relay3:user@domain.
  10246.  
  10247.  
  10248.          o    Some systems over-qualify domain names by adding a
  10249.               trailing dot to some or all domain names in addresses or
  10250.               message-ids.  This violates RFC-822 syntax.
  10251.  
  10252.  
  10253.       5.2.19  Explicit Source Routes: RFC-822 Section 6.2.7
  10254.  
  10255.          Internet host software SHOULD NOT create an RFC-822 header
  10256.          containing an address with an explicit source route, but MUST
  10257.          accept such headers for compatibility with earlier systems.
  10258.  
  10259.          DISCUSSION:
  10260.  
  10261.  
  10262.  
  10263. Internet Engineering Task Force                                [Page 58]
  10264.  
  10265.  
  10266.  
  10267.  
  10268. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10269.  
  10270.  
  10271.               In an understatement, RFC-822 says "The use of explicit
  10272.               source routing is discouraged".  Many hosts implemented
  10273.               RFC-822 source routes incorrectly, so the syntax cannot be
  10274.               used unambiguously in practice.  Many users feel the
  10275.               syntax is ugly.  Explicit source routes are not needed in
  10276.               the mail envelope for delivery; see Section 5.2.6.  For
  10277.               all these reasons, explicit source routes using the RFC-
  10278.               822 notations are not to be used in Internet mail headers.
  10279.  
  10280.               As stated in Section 5.2.16, it is necessary to allow an
  10281.               explicit source route to be buried in the local-part of an
  10282.               address, e.g., using the "%-hack", in order to allow mail
  10283.               to be gatewayed into another environment in which explicit
  10284.               source routing is necessary.  The vigilant will observe
  10285.               that there is no way for a User Agent to detect and
  10286.               prevent the use of such implicit source routing when the
  10287.               destination is within the Internet.  We can only
  10288.               discourage source routing of any kind within the Internet,
  10289.               as unnecessary and undesirable.
  10290.  
  10291.    5.3  SPECIFIC ISSUES
  10292.  
  10293.       5.3.1  SMTP Queueing Strategies
  10294.  
  10295.          The common structure of a host SMTP implementation includes
  10296.          user mailboxes, one or more areas for queueing messages in
  10297.          transit, and one or more daemon processes for sending and
  10298.          receiving mail.  The exact structure will vary depending on the
  10299.          needs of the users on the host and the number and size of
  10300.          mailing lists supported by the host.  We describe several
  10301.          optimizations that have proved helpful, particularly for
  10302.          mailers supporting high traffic levels.
  10303.  
  10304.          Any queueing strategy MUST include:
  10305.  
  10306.          o    Timeouts on all activities.  See Section 5.3.2.
  10307.  
  10308.          o    Never sending error messages in response to error
  10309.               messages.
  10310.  
  10311.  
  10312.          5.3.1.1 Sending Strategy
  10313.  
  10314.             The general model of a sender-SMTP is one or more processes
  10315.             that periodically attempt to transmit outgoing mail.  In a
  10316.             typical system, the program that composes a message has some
  10317.             method for requesting immediate attention for a new piece of
  10318.             outgoing mail, while mail that cannot be transmitted
  10319.  
  10320.  
  10321.  
  10322. Internet Engineering Task Force                                [Page 59]
  10323.  
  10324.  
  10325.  
  10326.  
  10327. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10328.  
  10329.  
  10330.             immediately MUST be queued and periodically retried by the
  10331.             sender.  A mail queue entry will include not only the
  10332.             message itself but also the envelope information.
  10333.  
  10334.             The sender MUST delay retrying a particular destination
  10335.             after one attempt has failed.  In general, the retry
  10336.             interval SHOULD be at least 30 minutes; however, more
  10337.             sophisticated and variable strategies will be beneficial
  10338.             when the sender-SMTP can determine the reason for non-
  10339.             delivery.
  10340.  
  10341.             Retries continue until the message is transmitted or the
  10342.             sender gives up; the give-up time generally needs to be at
  10343.             least 4-5 days.  The parameters to the retry algorithm MUST
  10344.             be configurable.
  10345.  
  10346.             A sender SHOULD keep a list of hosts it cannot reach and
  10347.             corresponding timeouts, rather than just retrying queued
  10348.             mail items.
  10349.  
  10350.             DISCUSSION:
  10351.                  Experience suggests that failures are typically
  10352.                  transient (the target system has crashed), favoring a
  10353.                  policy of two connection attempts in the first hour the
  10354.                  message is in the queue, and then backing off to once
  10355.                  every two or three hours.
  10356.  
  10357.                  The sender-SMTP can shorten the queueing delay by
  10358.                  cooperation with the receiver-SMTP.  In particular, if
  10359.                  mail is received from a particular address, it is good
  10360.                  evidence that any mail queued for that host can now be
  10361.                  sent.
  10362.  
  10363.                  The strategy may be further modified as a result of
  10364.                  multiple addresses per host (see Section 5.3.4), to
  10365.                  optimize delivery time vs. resource usage.
  10366.  
  10367.                  A sender-SMTP may have a large queue of messages for
  10368.                  each unavailable destination host, and if it retried
  10369.                  all these messages in every retry cycle, there would be
  10370.                  excessive Internet overhead and the daemon would be
  10371.                  blocked for a long period.  Note that an SMTP can
  10372.                  generally determine that a delivery attempt has failed
  10373.                  only after a timeout of a minute or more; a one minute
  10374.                  timeout per connection will result in a very large
  10375.                  delay if it is repeated for dozens or even hundreds of
  10376.                  queued messages.
  10377.  
  10378.  
  10379.  
  10380.  
  10381. Internet Engineering Task Force                                [Page 60]
  10382.  
  10383.  
  10384.  
  10385.  
  10386. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10387.  
  10388.  
  10389.             When the same message is to be delivered to several users on
  10390.             the same host, only one copy of the message SHOULD be
  10391.             transmitted.  That is, the sender-SMTP should use the
  10392.             command sequence: RCPT, RCPT,... RCPT, DATA instead of the
  10393.             sequence: RCPT, DATA, RCPT, DATA,... RCPT, DATA.
  10394.             Implementation of this efficiency feature is strongly urged.
  10395.  
  10396.             Similarly, the sender-SMTP MAY support multiple concurrent
  10397.             outgoing mail transactions to achieve timely delivery.
  10398.             However, some limit SHOULD be imposed to protect the host
  10399.             from devoting all its resources to mail.
  10400.  
  10401.             The use of the different addresses of a multihomed host is
  10402.             discussed below.
  10403.  
  10404.          5.3.1.2  Receiving strategy
  10405.  
  10406.             The receiver-SMTP SHOULD attempt to keep a pending listen on
  10407.             the SMTP port at all times.  This will require the support
  10408.             of multiple incoming TCP connections for SMTP.  Some limit
  10409.             MAY be imposed.
  10410.  
  10411.             IMPLEMENTATION:
  10412.                  When the receiver-SMTP receives mail from a particular
  10413.                  host address, it could notify the sender-SMTP to retry
  10414.                  any mail pending for that host address.
  10415.  
  10416.       5.3.2  Timeouts in SMTP
  10417.  
  10418.          There are two approaches to timeouts in the sender-SMTP:  (a)
  10419.          limit the time for each SMTP command separately, or (b) limit
  10420.          the time for the entire SMTP dialogue for a single mail
  10421.          message.  A sender-SMTP SHOULD use option (a), per-command
  10422.          timeouts.  Timeouts SHOULD be easily reconfigurable, preferably
  10423.          without recompiling the SMTP code.
  10424.  
  10425.          DISCUSSION:
  10426.               Timeouts are an essential feature of an SMTP
  10427.               implementation.  If the timeouts are too long (or worse,
  10428.               there are no timeouts), Internet communication failures or
  10429.               software bugs in receiver-SMTP programs can tie up SMTP
  10430.               processes indefinitely.  If the timeouts are too short,
  10431.               resources will be wasted with attempts that time out part
  10432.               way through message delivery.
  10433.  
  10434.               If option (b) is used, the timeout has to be very large,
  10435.               e.g., an hour, to allow time to expand very large mailing
  10436.               lists.  The timeout may also need to increase linearly
  10437.  
  10438.  
  10439.  
  10440. Internet Engineering Task Force                                [Page 61]
  10441.  
  10442.  
  10443.  
  10444.  
  10445. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10446.  
  10447.  
  10448.               with the size of the message, to account for the time to
  10449.               transmit a very large message.  A large fixed timeout
  10450.               leads to two problems:  a failure can still tie up the
  10451.               sender for a very long time, and very large messages may
  10452.               still spuriously time out (which is a wasteful failure!).
  10453.  
  10454.               Using the recommended option (a), a timer is set for each
  10455.               SMTP command and for each buffer of the data transfer.
  10456.               The latter means that the overall timeout is inherently
  10457.               proportional to the size of the message.
  10458.  
  10459.          Based on extensive experience with busy mail-relay hosts, the
  10460.          minimum per-command timeout values SHOULD be as follows:
  10461.  
  10462.          o    Initial 220 Message: 5 minutes
  10463.  
  10464.               A Sender-SMTP process needs to distinguish between a
  10465.               failed TCP connection and a delay in receiving the initial
  10466.               220 greeting message.  Many receiver-SMTPs will accept a
  10467.               TCP connection but delay delivery of the 220 message until
  10468.               their system load will permit more mail to be processed.
  10469.  
  10470.          o    MAIL Command: 5 minutes
  10471.  
  10472.  
  10473.          o    RCPT Command: 5 minutes
  10474.  
  10475.               A longer timeout would be required if processing of
  10476.               mailing lists and aliases were not deferred until after
  10477.               the message was accepted.
  10478.  
  10479.          o    DATA Initiation: 2 minutes
  10480.  
  10481.               This is while awaiting the "354 Start Input" reply to a
  10482.               DATA command.
  10483.  
  10484.          o    Data Block: 3 minutes
  10485.  
  10486.               This is while awaiting the completion of each TCP SEND
  10487.               call transmitting a chunk of data.
  10488.  
  10489.          o    DATA Termination: 10 minutes.
  10490.  
  10491.               This is while awaiting the "250 OK" reply. When the
  10492.               receiver gets the final period terminating the message
  10493.               data, it typically performs processing to deliver the
  10494.               message to a user mailbox.  A spurious timeout at this
  10495.               point would be very wasteful, since the message has been
  10496.  
  10497.  
  10498.  
  10499. Internet Engineering Task Force                                [Page 62]
  10500.  
  10501.  
  10502.  
  10503.  
  10504. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10505.  
  10506.  
  10507.               successfully sent.
  10508.  
  10509.          A receiver-SMTP SHOULD have a timeout of at least 5 minutes
  10510.          while it is awaiting the next command from the sender.
  10511.  
  10512.       5.3.3  Reliable Mail Receipt
  10513.  
  10514.          When the receiver-SMTP accepts a piece of mail (by sending a
  10515.          "250 OK" message in response to DATA), it is accepting
  10516.          responsibility for delivering or relaying the message.  It must
  10517.          take this responsibility seriously, i.e., it MUST NOT lose the
  10518.          message for frivolous reasons, e.g., because the host later
  10519.          crashes or because of a predictable resource shortage.
  10520.  
  10521.          If there is a delivery failure after acceptance of a message,
  10522.          the receiver-SMTP MUST formulate and mail a notification
  10523.          message.  This notification MUST be sent using a null ("<>")
  10524.          reverse path in the envelope; see Section 3.6 of RFC-821.  The
  10525.          recipient of this notification SHOULD be the address from the
  10526.          envelope return path (or the Return-Path: line).  However, if
  10527.          this address is null ("<>"),  the receiver-SMTP MUST NOT send a
  10528.          notification.  If the address is an explicit source route, it
  10529.          SHOULD be stripped down to its final hop.
  10530.  
  10531.          DISCUSSION:
  10532.               For example, suppose that an error notification must be
  10533.               sent for a message that arrived with:
  10534.               "MAIL FROM:<@a,@b:user@d>".  The notification message
  10535.               should be sent to: "RCPT TO:<user@d>".
  10536.  
  10537.               Some delivery failures after the message is accepted by
  10538.               SMTP will be unavoidable.  For example, it may be
  10539.               impossible for the receiver-SMTP to validate all the
  10540.               delivery addresses in RCPT command(s) due to a "soft"
  10541.               domain system error or because the target is a mailing
  10542.               list (see earlier discussion of RCPT).
  10543.  
  10544.          To avoid receiving duplicate messages as the result of
  10545.          timeouts, a receiver-SMTP MUST seek to minimize the time
  10546.          required to respond to the final "." that ends a message
  10547.          transfer.  See RFC-1047 [SMTP:4] for a discussion of this
  10548.          problem.
  10549.  
  10550.       5.3.4  Reliable Mail Transmission
  10551.  
  10552.          To transmit a message, a sender-SMTP determines the IP address
  10553.          of the target host from the destination address in the
  10554.          envelope.  Specifically, it maps the string to the right of the
  10555.  
  10556.  
  10557.  
  10558. Internet Engineering Task Force                                [Page 63]
  10559.  
  10560.  
  10561.  
  10562.  
  10563. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10564.  
  10565.  
  10566.          "@" sign into an IP address.  This mapping or the transfer
  10567.          itself may fail with a soft error, in which case the sender-
  10568.          SMTP will requeue the outgoing mail for a later retry, as
  10569.          required in Section 5.3.1.1.
  10570.  
  10571.          When it succeeds, the mapping can result in a list of
  10572.          alternative delivery addresses rather than a single address,
  10573.          because of (a) multiple MX records, (b) multihoming, or both.
  10574.          To provide reliable mail transmission, the sender-SMTP MUST be
  10575.          able to try (and retry) each of the addresses in this list in
  10576.          order, until a delivery attempt succeeds.  However, there MAY
  10577.          also be a configurable limit on the number of alternate
  10578.          addresses that can be tried.  In any case, a host SHOULD try at
  10579.          least two addresses.
  10580.  
  10581.          The following information is to be used to rank the host
  10582.          addresses:
  10583.  
  10584.          (1)  Multiple MX Records -- these contain a preference
  10585.               indication that should be used in sorting.  If there are
  10586.               multiple destinations with the same preference and there
  10587.               is no clear reason to favor one (e.g., by address
  10588.               preference), then the sender-SMTP SHOULD pick one at
  10589.               random to spread the load across multiple mail exchanges
  10590.               for a specific organization; note that this is a
  10591.               refinement of the procedure in [DNS:3].
  10592.  
  10593.          (2)  Multihomed host -- The destination host (perhaps taken
  10594.               from the preferred MX record) may be multihomed, in which
  10595.               case the domain name resolver will return a list of
  10596.               alternative IP addresses.  It is the responsibility of the
  10597.               domain name resolver interface (see Section 6.1.3.4 below)
  10598.               to have ordered this list by decreasing preference, and
  10599.               SMTP MUST try them in the order presented.
  10600.  
  10601.          DISCUSSION:
  10602.               Although the capability to try multiple alternative
  10603.               addresses is required, there may be circumstances where
  10604.               specific installations want to limit or disable the use of
  10605.               alternative addresses.  The question of whether a sender
  10606.               should attempt retries using the different addresses of a
  10607.               multihomed host has been controversial.  The main argument
  10608.               for using the multiple addresses is that it maximizes the
  10609.               probability of timely delivery, and indeed sometimes the
  10610.               probability of any delivery; the counter argument is that
  10611.               it may result in unnecessary resource use.
  10612.  
  10613.               Note that resource use is also strongly determined by the
  10614.  
  10615.  
  10616.  
  10617. Internet Engineering Task Force                                [Page 64]
  10618.  
  10619.  
  10620.  
  10621.  
  10622. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10623.  
  10624.  
  10625.               sending strategy discussed in Section 5.3.1.
  10626.  
  10627.       5.3.5  Domain Name Support
  10628.  
  10629.          SMTP implementations MUST use the mechanism defined in Section
  10630.          6.1 for mapping between domain names and IP addresses.  This
  10631.          means that every Internet SMTP MUST include support for the
  10632.          Internet DNS.
  10633.  
  10634.          In particular, a sender-SMTP MUST support the MX record scheme
  10635.          [SMTP:3].  See also Section 7.4 of [DNS:2] for information on
  10636.          domain name support for SMTP.
  10637.  
  10638.       5.3.6  Mailing Lists and Aliases
  10639.  
  10640.          An SMTP-capable host SHOULD support both the alias and the list
  10641.          form of address expansion for multiple delivery.  When a
  10642.          message is delivered or forwarded to each address of an
  10643.          expanded list form, the return address in the envelope
  10644.          ("MAIL FROM:") MUST be changed to be the address of a person
  10645.          who administers the list, but the message header MUST be left
  10646.          unchanged; in particular, the "From" field of the message is
  10647.          unaffected.
  10648.  
  10649.          DISCUSSION:
  10650.               An important mail facility is a mechanism for multi-
  10651.               destination delivery of a single message, by transforming
  10652.               or "expanding" a pseudo-mailbox address into a list of
  10653.               destination mailbox addresses.  When a message is sent to
  10654.               such a pseudo-mailbox (sometimes called an "exploder"),
  10655.               copies are forwarded or redistributed to each mailbox in
  10656.               the expanded list.  We classify such a pseudo-mailbox as
  10657.               an "alias" or a "list", depending upon the expansion
  10658.               rules:
  10659.  
  10660.               (a)  Alias
  10661.  
  10662.                    To expand an alias, the recipient mailer simply
  10663.                    replaces the pseudo-mailbox address in the envelope
  10664.                    with each of the expanded addresses in turn; the rest
  10665.                    of the envelope and the message body are left
  10666.                    unchanged.  The message is then delivered or
  10667.                    forwarded to each expanded address.
  10668.  
  10669.               (b)  List
  10670.  
  10671.                    A mailing list may be said to operate by
  10672.                    "redistribution" rather than by "forwarding".  To
  10673.  
  10674.  
  10675.  
  10676. Internet Engineering Task Force                                [Page 65]
  10677.  
  10678.  
  10679.  
  10680.  
  10681. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10682.  
  10683.  
  10684.                    expand a list, the recipient mailer replaces the
  10685.                    pseudo-mailbox address in the envelope with each of
  10686.                    the expanded addresses in turn. The return address in
  10687.                    the envelope is changed so that all error messages
  10688.                    generated by the final deliveries will be returned to
  10689.                    a list administrator, not to the message originator,
  10690.                    who generally has no control over the contents of the
  10691.                    list and will typically find error messages annoying.
  10692.  
  10693.  
  10694.       5.3.7  Mail Gatewaying
  10695.  
  10696.          Gatewaying mail between different mail environments, i.e.,
  10697.          different mail formats and protocols, is complex and does not
  10698.          easily yield to standardization.  See for example [SMTP:5a],
  10699.          [SMTP:5b].  However, some general requirements may be given for
  10700.          a gateway between the Internet and another mail environment.
  10701.  
  10702.          (A)  Header fields MAY be rewritten when necessary as messages
  10703.               are gatewayed across mail environment boundaries.
  10704.  
  10705.               DISCUSSION:
  10706.                    This may involve interpreting the local-part of the
  10707.                    destination address, as suggested in Section 5.2.16.
  10708.  
  10709.                    The other mail systems gatewayed to the Internet
  10710.                    generally use a subset of RFC-822 headers, but some
  10711.                    of them do not have an equivalent to the SMTP
  10712.                    envelope.  Therefore, when a message leaves the
  10713.                    Internet environment, it may be necessary to fold the
  10714.                    SMTP envelope information into the message header.  A
  10715.                    possible solution would be to create new header
  10716.                    fields to carry the envelope information (e.g., "X-
  10717.                    SMTP-MAIL:" and "X-SMTP-RCPT:"); however, this would
  10718.                    require changes in mail programs in the foreign
  10719.                    environment.
  10720.  
  10721.          (B)  When forwarding a message into or out of the Internet
  10722.               environment, a gateway MUST prepend a Received: line, but
  10723.               it MUST NOT alter in any way a Received: line that is
  10724.               already in the header.
  10725.  
  10726.               DISCUSSION:
  10727.                    This requirement is a subset of the general
  10728.                    "Received:" line requirement of Section 5.2.8; it is
  10729.                    restated here for emphasis.
  10730.  
  10731.                    Received: fields of messages originating from other
  10732.  
  10733.  
  10734.  
  10735. Internet Engineering Task Force                                [Page 66]
  10736.  
  10737.  
  10738.  
  10739.  
  10740. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10741.  
  10742.  
  10743.                    environments may not conform exactly to RFC822.
  10744.                    However, the most important use of Received: lines is
  10745.                    for debugging mail faults, and this debugging can be
  10746.                    severely hampered by well-meaning gateways that try
  10747.                    to "fix" a Received: line.
  10748.  
  10749.                    The gateway is strongly encouraged to indicate the
  10750.                    environment and protocol in the "via" clauses of
  10751.                    Received field(s) that it supplies.
  10752.  
  10753.          (C)  From the Internet side, the gateway SHOULD accept all
  10754.               valid address formats in SMTP commands and in RFC-822
  10755.               headers, and all valid RFC-822 messages.  Although a
  10756.               gateway must accept an RFC-822 explicit source route
  10757.               ("@...:" format) in either the RFC-822 header or in the
  10758.               envelope, it MAY or may not act on the source route; see
  10759.               Sections 5.2.6 and 5.2.19.
  10760.  
  10761.               DISCUSSION:
  10762.                    It is often tempting to restrict the range of
  10763.                    addresses accepted at the mail gateway to simplify
  10764.                    the translation into addresses for the remote
  10765.                    environment.  This practice is based on the
  10766.                    assumption that mail users have control over the
  10767.                    addresses their mailers send to the mail gateway.  In
  10768.                    practice, however, users have little control over the
  10769.                    addresses that are finally sent; their mailers are
  10770.                    free to change addresses into any legal RFC-822
  10771.                    format.
  10772.  
  10773.          (D)  The gateway MUST ensure that all header fields of a
  10774.               message that it forwards into the Internet meet the
  10775.               requirements for Internet mail.  In particular, all
  10776.               addresses in "From:", "To:", "Cc:", etc., fields must be
  10777.               transformed (if necessary) to satisfy RFC-822 syntax, and
  10778.               they must be effective and useful for sending replies.
  10779.  
  10780.  
  10781.          (E)  The translation algorithm used to convert mail from the
  10782.               Internet protocols to another environment's protocol
  10783.               SHOULD try to ensure that error messages from the foreign
  10784.               mail environment are delivered to the return path from the
  10785.               SMTP envelope, not to the sender listed in the "From:"
  10786.               field of the RFC-822 message.
  10787.  
  10788.               DISCUSSION:
  10789.                    Internet mail lists usually place the address of the
  10790.                    mail list maintainer in the envelope but leave the
  10791.  
  10792.  
  10793.  
  10794. Internet Engineering Task Force                                [Page 67]
  10795.  
  10796.  
  10797.  
  10798.  
  10799. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10800.  
  10801.  
  10802.                    original message header intact (with the "From:"
  10803.                    field containing the original sender).  This yields
  10804.                    the behavior the average recipient expects: a reply
  10805.                    to the header gets sent to the original sender, not
  10806.                    to a mail list maintainer; however, errors get sent
  10807.                    to the maintainer (who can fix the problem) and not
  10808.                    the sender (who probably cannot).
  10809.  
  10810.          (F)  Similarly, when forwarding a message from another
  10811.               environment into the Internet, the gateway SHOULD set the
  10812.               envelope return path in accordance with an error message
  10813.               return address, if any, supplied by the foreign
  10814.               environment.
  10815.  
  10816.  
  10817.       5.3.8  Maximum Message Size
  10818.  
  10819.          Mailer software MUST be able to send and receive messages of at
  10820.          least 64K bytes in length (including header), and a much larger
  10821.          maximum size is highly desirable.
  10822.  
  10823.          DISCUSSION:
  10824.               Although SMTP does not define the maximum size of a
  10825.               message, many systems impose implementation limits.
  10826.  
  10827.               The current de facto minimum limit in the Internet is 64K
  10828.               bytes.  However, electronic mail is used for a variety of
  10829.               purposes that create much larger messages.  For example,
  10830.               mail is often used instead of FTP for transmitting ASCII
  10831.               files, and in particular to transmit entire documents.  As
  10832.               a result, messages can be 1 megabyte or even larger.  We
  10833.               note that the present document together with its lower-
  10834.               layer companion contains 0.5 megabytes.
  10835.  
  10836.  
  10837.  
  10838.  
  10839.  
  10840.  
  10841.  
  10842.  
  10843.  
  10844.  
  10845.  
  10846.  
  10847.  
  10848.  
  10849.  
  10850.  
  10851.  
  10852.  
  10853. Internet Engineering Task Force                                [Page 68]
  10854.  
  10855.  
  10856.  
  10857.  
  10858. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10859.  
  10860.  
  10861.    5.4  SMTP REQUIREMENTS SUMMARY
  10862.  
  10863.                                                |          | | | |S| |
  10864.                                                |          | | | |H| |F
  10865.                                                |          | | | |O|M|o
  10866.                                                |          | |S| |U|U|o
  10867.                                                |          | |H| |L|S|t
  10868.                                                |          |M|O| |D|T|n
  10869.                                                |          |U|U|M| | |o
  10870.                                                |          |S|L|A|N|N|t
  10871.                                                |          |T|D|Y|O|O|t
  10872. FEATURE                                        |SECTION   | | | |T|T|e
  10873. -----------------------------------------------|----------|-|-|-|-|-|--
  10874.                                                |          | | | | | |
  10875. RECEIVER-SMTP:                                 |          | | | | | |
  10876.   Implement VRFY                               |5.2.3     |x| | | | |
  10877.   Implement EXPN                               |5.2.3     | |x| | | |
  10878.     EXPN, VRFY configurable                    |5.2.3     | | |x| | |
  10879.   Implement SEND, SOML, SAML                   |5.2.4     | | |x| | |
  10880.   Verify HELO parameter                        |5.2.5     | | |x| | |
  10881.     Refuse message with bad HELO               |5.2.5     | | | | |x|
  10882.   Accept explicit src-route syntax in env.     |5.2.6     |x| | | | |
  10883.   Support "postmaster"                         |5.2.7     |x| | | | |
  10884.   Process RCPT when received (except lists)    |5.2.7     | | |x| | |
  10885.       Long delay of RCPT responses             |5.2.7     | | | | |x|
  10886.                                                |          | | | | | |
  10887.   Add Received: line                           |5.2.8     |x| | | | |
  10888.       Received: line include domain literal    |5.2.8     | |x| | | |
  10889.   Change previous Received: line               |5.2.8     | | | | |x|
  10890.   Pass Return-Path info (final deliv/gwy)      |5.2.8     |x| | | | |
  10891.   Support empty reverse path                   |5.2.9     |x| | | | |
  10892.   Send only official reply codes               |5.2.10    | |x| | | |
  10893.   Send text from RFC-821 when appropriate      |5.2.10    | |x| | | |
  10894.   Delete "." for transparency                  |5.2.11    |x| | | | |
  10895.   Accept and recognize self domain literal(s)  |5.2.17    |x| | | | |
  10896.                                                |          | | | | | |
  10897.   Error message about error message            |5.3.1     | | | | |x|
  10898.   Keep pending listen on SMTP port             |5.3.1.2   | |x| | | |
  10899.   Provide limit on recv concurrency            |5.3.1.2   | | |x| | |
  10900.   Wait at least 5 mins for next sender cmd     |5.3.2     | |x| | | |
  10901.   Avoidable delivery failure after "250 OK"    |5.3.3     | | | | |x|
  10902.   Send error notification msg after accept     |5.3.3     |x| | | | |
  10903.     Send using null return path                |5.3.3     |x| | | | |
  10904.     Send to envelope return path               |5.3.3     | |x| | | |
  10905.     Send to null address                       |5.3.3     | | | | |x|
  10906.     Strip off explicit src route               |5.3.3     | |x| | | |
  10907.   Minimize acceptance delay (RFC-1047)         |5.3.3     |x| | | | |
  10908. -----------------------------------------------|----------|-|-|-|-|-|--
  10909.  
  10910.  
  10911.  
  10912. Internet Engineering Task Force                                [Page 69]
  10913.  
  10914.  
  10915.  
  10916.  
  10917. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10918.  
  10919.  
  10920.                                                |          | | | | | |
  10921. SENDER-SMTP:                                   |          | | | | | |
  10922.   Canonicalized domain names in MAIL, RCPT     |5.2.2     |x| | | | |
  10923.   Implement SEND, SOML, SAML                   |5.2.4     | | |x| | |
  10924.   Send valid principal host name in HELO       |5.2.5     |x| | | | |
  10925.   Send explicit source route in RCPT TO:       |5.2.6     | | | |x| |
  10926.   Use only reply code to determine action      |5.2.10    |x| | | | |
  10927.   Use only high digit of reply code when poss. |5.2.10    | |x| | | |
  10928.   Add "." for transparency                     |5.2.11    |x| | | | |
  10929.                                                |          | | | | | |
  10930.   Retry messages after soft failure            |5.3.1.1   |x| | | | |
  10931.     Delay before retry                         |5.3.1.1   |x| | | | |
  10932.     Configurable retry parameters              |5.3.1.1   |x| | | | |
  10933.     Retry once per each queued dest host       |5.3.1.1   | |x| | | |
  10934.   Multiple RCPT's for same DATA                |5.3.1.1   | |x| | | |
  10935.   Support multiple concurrent transactions     |5.3.1.1   | | |x| | |
  10936.     Provide limit on concurrency               |5.3.1.1   | |x| | | |
  10937.                                                |          | | | | | |
  10938.   Timeouts on all activities                   |5.3.1     |x| | | | |
  10939.     Per-command timeouts                       |5.3.2     | |x| | | |
  10940.     Timeouts easily reconfigurable             |5.3.2     | |x| | | |
  10941.     Recommended times                          |5.3.2     | |x| | | |
  10942.   Try alternate addr's in order                |5.3.4     |x| | | | |
  10943.     Configurable limit on alternate tries      |5.3.4     | | |x| | |
  10944.     Try at least two alternates                |5.3.4     | |x| | | |
  10945.   Load-split across equal MX alternates        |5.3.4     | |x| | | |
  10946.   Use the Domain Name System                   |5.3.5     |x| | | | |
  10947.     Support MX records                         |5.3.5     |x| | | | |
  10948.     Use WKS records in MX processing           |5.2.12    | | | |x| |
  10949. -----------------------------------------------|----------|-|-|-|-|-|--
  10950.                                                |          | | | | | |
  10951. MAIL FORWARDING:                               |          | | | | | |
  10952.   Alter existing header field(s)               |5.2.6     | | | |x| |
  10953.   Implement relay function: 821/section 3.6    |5.2.6     | | |x| | |
  10954.     If not, deliver to RHS domain              |5.2.6     | |x| | | |
  10955.   Interpret 'local-part' of addr               |5.2.16    | | | | |x|
  10956.                                                |          | | | | | |
  10957. MAILING LISTS AND ALIASES                      |          | | | | | |
  10958.   Support both                                 |5.3.6     | |x| | | |
  10959.   Report mail list error to local admin.       |5.3.6     |x| | | | |
  10960.                                                |          | | | | | |
  10961. MAIL GATEWAYS:                                 |          | | | | | |
  10962.   Embed foreign mail route in local-part       |5.2.16    | | |x| | |
  10963.   Rewrite header fields when necessary         |5.3.7     | | |x| | |
  10964.   Prepend Received: line                       |5.3.7     |x| | | | |
  10965.   Change existing Received: line               |5.3.7     | | | | |x|
  10966.   Accept full RFC-822 on Internet side         |5.3.7     | |x| | | |
  10967.   Act on RFC-822 explicit source route         |5.3.7     | | |x| | |
  10968.  
  10969.  
  10970.  
  10971. Internet Engineering Task Force                                [Page 70]
  10972.  
  10973.  
  10974.  
  10975.  
  10976. RFC1123                  MAIL -- SMTP & RFC-822             October 1989
  10977.  
  10978.  
  10979.   Send only valid RFC-822 on Internet side     |5.3.7     |x| | | | |
  10980.   Deliver error msgs to envelope addr          |5.3.7     | |x| | | |
  10981.   Set env return path from err return addr     |5.3.7     | |x| | | |
  10982.                                                |          | | | | | |
  10983. USER AGENT -- RFC-822                          |          | | | | | |
  10984.   Allow user to enter <route> address          |5.2.6     | | | |x| |
  10985.   Support RFC-1049 Content Type field          |5.2.13    | | |x| | |
  10986.   Use 4-digit years                            |5.2.14    | |x| | | |
  10987.   Generate numeric timezones                   |5.2.14    | |x| | | |
  10988.   Accept all timezones                         |5.2.14    |x| | | | |
  10989.   Use non-num timezones from RFC-822           |5.2.14    |x| | | | |
  10990.   Omit phrase before route-addr                |5.2.15    | | |x| | |
  10991.   Accept and parse dot.dec. domain literals    |5.2.17    |x| | | | |
  10992.   Accept all RFC-822 address formats           |5.2.18    |x| | | | |
  10993.   Generate invalid RFC-822 address format      |5.2.18    | | | | |x|
  10994.   Fully-qualified domain names in header       |5.2.18    |x| | | | |
  10995.   Create explicit src route in header          |5.2.19    | | | |x| |
  10996.   Accept explicit src route in header          |5.2.19    |x| | | | |
  10997.                                                |          | | | | | |
  10998. Send/recv at least 64KB messages               |5.3.8     |x| | | | |
  10999.  
  11000.  
  11001.  
  11002.  
  11003.  
  11004.  
  11005.  
  11006.  
  11007.  
  11008.  
  11009.  
  11010.  
  11011.  
  11012.  
  11013.  
  11014.  
  11015.  
  11016.  
  11017.  
  11018.  
  11019.  
  11020.  
  11021.  
  11022.  
  11023.  
  11024.  
  11025.  
  11026.  
  11027.  
  11028.  
  11029.  
  11030. Internet Engineering Task Force                                [Page 71]
  11031.  
  11032.  
  11033.  
  11034.  
  11035. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11036.  
  11037.  
  11038. 6. SUPPORT SERVICES
  11039.  
  11040.    6.1 DOMAIN NAME TRANSLATION
  11041.  
  11042.       6.1.1 INTRODUCTION
  11043.  
  11044.          Every host MUST implement a resolver for the Domain Name System
  11045.          (DNS), and it MUST implement a mechanism using this DNS
  11046.          resolver to convert host names to IP addresses and vice-versa
  11047.          [DNS:1, DNS:2].
  11048.  
  11049.          In addition to the DNS, a host MAY also implement a host name
  11050.          translation mechanism that searches a local Internet host
  11051.          table.  See Section 6.1.3.8 for more information on this
  11052.          option.
  11053.  
  11054.          DISCUSSION:
  11055.               Internet host name translation was originally performed by
  11056.               searching local copies of a table of all hosts.  This
  11057.               table became too large to update and distribute in a
  11058.               timely manner and too large to fit into many hosts, so the
  11059.               DNS was invented.
  11060.  
  11061.               The DNS creates a distributed database used primarily for
  11062.               the translation between host names and host addresses.
  11063.               Implementation of DNS software is required.  The DNS
  11064.               consists of two logically distinct parts: name servers and
  11065.               resolvers (although implementations often combine these
  11066.               two logical parts in the interest of efficiency) [DNS:2].
  11067.  
  11068.               Domain name servers store authoritative data about certain
  11069.               sections of the database and answer queries about the
  11070.               data.  Domain resolvers query domain name servers for data
  11071.               on behalf of user processes.  Every host therefore needs a
  11072.               DNS resolver; some host machines will also need to run
  11073.               domain name servers.  Since no name server has complete
  11074.               information, in general it is necessary to obtain
  11075.               information from more than one name server to resolve a
  11076.               query.
  11077.  
  11078.       6.1.2  PROTOCOL WALK-THROUGH
  11079.  
  11080.          An implementor must study references [DNS:1] and [DNS:2]
  11081.          carefully.  They provide a thorough description of the theory,
  11082.          protocol, and implementation of the domain name system, and
  11083.          reflect several years of experience.
  11084.  
  11085.  
  11086.  
  11087.  
  11088.  
  11089. Internet Engineering Task Force                                [Page 72]
  11090.  
  11091.  
  11092.  
  11093.  
  11094. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11095.  
  11096.  
  11097.          6.1.2.1  Resource Records with Zero TTL: RFC-1035 Section 3.2.1
  11098.  
  11099.             All DNS name servers and resolvers MUST properly handle RRs
  11100.             with a zero TTL: return the RR to the client but do not
  11101.             cache it.
  11102.  
  11103.             DISCUSSION:
  11104.                  Zero TTL values are interpreted to mean that the RR can
  11105.                  only be used for the transaction in progress, and
  11106.                  should not be cached; they are useful for extremely
  11107.                  volatile data.
  11108.  
  11109.          6.1.2.2  QCLASS Values: RFC-1035 Section 3.2.5
  11110.  
  11111.             A query with "QCLASS=*" SHOULD NOT be used unless the
  11112.             requestor is seeking data from more than one class.  In
  11113.             particular, if the requestor is only interested in Internet
  11114.             data types, QCLASS=IN MUST be used.
  11115.  
  11116.          6.1.2.3  Unused Fields: RFC-1035 Section 4.1.1
  11117.  
  11118.             Unused fields in a query or response message MUST be zero.
  11119.  
  11120.          6.1.2.4  Compression: RFC-1035 Section 4.1.4
  11121.  
  11122.             Name servers MUST use compression in responses.
  11123.  
  11124.             DISCUSSION:
  11125.                  Compression is essential to avoid overflowing UDP
  11126.                  datagrams; see Section 6.1.3.2.
  11127.  
  11128.          6.1.2.5  Misusing Configuration Info: RFC-1035 Section 6.1.2
  11129.  
  11130.             Recursive name servers and full-service resolvers generally
  11131.             have some configuration information containing hints about
  11132.             the location of root or local name servers.  An
  11133.             implementation MUST NOT include any of these hints in a
  11134.             response.
  11135.  
  11136.             DISCUSSION:
  11137.                  Many implementors have found it convenient to store
  11138.                  these hints as if they were cached data, but some
  11139.                  neglected to ensure that this "cached data" was not
  11140.                  included in responses.  This has caused serious
  11141.                  problems in the Internet when the hints were obsolete
  11142.                  or incorrect.
  11143.  
  11144.  
  11145.  
  11146.  
  11147.  
  11148. Internet Engineering Task Force                                [Page 73]
  11149.  
  11150.  
  11151.  
  11152.  
  11153. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11154.  
  11155.  
  11156.       6.1.3  SPECIFIC ISSUES
  11157.  
  11158.          6.1.3.1  Resolver Implementation
  11159.  
  11160.             A name resolver SHOULD be able to multiplex concurrent
  11161.             requests if the host supports concurrent processes.
  11162.  
  11163.             In implementing a DNS resolver, one of two different models
  11164.             MAY optionally be chosen: a full-service resolver, or a stub
  11165.             resolver.
  11166.  
  11167.  
  11168.             (A)  Full-Service Resolver
  11169.  
  11170.                  A full-service resolver is a complete implementation of
  11171.                  the resolver service, and is capable of dealing with
  11172.                  communication failures, failure of individual name
  11173.                  servers, location of the proper name server for a given
  11174.                  name, etc.  It must satisfy the following requirements:
  11175.  
  11176.                  o    The resolver MUST implement a local caching
  11177.                       function to avoid repeated remote access for
  11178.                       identical requests, and MUST time out information
  11179.                       in the cache.
  11180.  
  11181.                  o    The resolver SHOULD be configurable with start-up
  11182.                       information pointing to multiple root name servers
  11183.                       and multiple name servers for the local domain.
  11184.                       This insures that the resolver will be able to
  11185.                       access the whole name space in normal cases, and
  11186.                       will be able to access local domain information
  11187.                       should the local network become disconnected from
  11188.                       the rest of the Internet.
  11189.  
  11190.  
  11191.             (B)  Stub Resolver
  11192.  
  11193.                  A "stub resolver" relies on the services of a recursive
  11194.                  name server on the connected network or a "nearby"
  11195.                  network.  This scheme allows the host to pass on the
  11196.                  burden of the resolver function to a name server on
  11197.                  another host.  This model is often essential for less
  11198.                  capable hosts, such as PCs, and is also recommended
  11199.                  when the host is one of several workstations on a local
  11200.                  network, because it allows all of the workstations to
  11201.                  share the cache of the recursive name server and hence
  11202.                  reduce the number of domain requests exported by the
  11203.                  local network.
  11204.  
  11205.  
  11206.  
  11207. Internet Engineering Task Force                                [Page 74]
  11208.  
  11209.  
  11210.  
  11211.  
  11212. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11213.  
  11214.  
  11215.                  At a minimum, the stub resolver MUST be capable of
  11216.                  directing its requests to redundant recursive name
  11217.                  servers.  Note that recursive name servers are allowed
  11218.                  to restrict the sources of requests that they will
  11219.                  honor, so the host administrator must verify that the
  11220.                  service will be provided.  Stub resolvers MAY implement
  11221.                  caching if they choose, but if so, MUST timeout cached
  11222.                  information.
  11223.  
  11224.  
  11225.          6.1.3.2  Transport Protocols
  11226.  
  11227.             DNS resolvers and recursive servers MUST support UDP, and
  11228.             SHOULD support TCP, for sending (non-zone-transfer) queries.
  11229.             Specifically, a DNS resolver or server that is sending a
  11230.             non-zone-transfer query MUST send a UDP query first.  If the
  11231.             Answer section of the response is truncated and if the
  11232.             requester supports TCP, it SHOULD try the query again using
  11233.             TCP.
  11234.  
  11235.             DNS servers MUST be able to service UDP queries and SHOULD
  11236.             be able to service TCP queries.  A name server MAY limit the
  11237.             resources it devotes to TCP queries, but it SHOULD NOT
  11238.             refuse to service a TCP query just because it would have
  11239.             succeeded with UDP.
  11240.  
  11241.             Truncated responses MUST NOT be saved (cached) and later
  11242.             used in such a way that the fact that they are truncated is
  11243.             lost.
  11244.  
  11245.             DISCUSSION:
  11246.                  UDP is preferred over TCP for queries because UDP
  11247.                  queries have much lower overhead, both in packet count
  11248.                  and in connection state.  The use of UDP is essential
  11249.                  for heavily-loaded servers, especially the root
  11250.                  servers.  UDP also offers additional robustness, since
  11251.                  a resolver can attempt several UDP queries to different
  11252.                  servers for the cost of a single TCP query.
  11253.  
  11254.                  It is possible for a DNS response to be truncated,
  11255.                  although this is a very rare occurrence in the present
  11256.                  Internet DNS.  Practically speaking, truncation cannot
  11257.                  be predicted, since it is data-dependent.  The
  11258.                  dependencies include the number of RRs in the answer,
  11259.                  the size of each RR, and the savings in space realized
  11260.                  by the name compression algorithm.  As a rule of thumb,
  11261.                  truncation in NS and MX lists should not occur for
  11262.                  answers containing 15 or fewer RRs.
  11263.  
  11264.  
  11265.  
  11266. Internet Engineering Task Force                                [Page 75]
  11267.  
  11268.  
  11269.  
  11270.  
  11271. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11272.  
  11273.  
  11274.                  Whether it is possible to use a truncated answer
  11275.                  depends on the application.  A mailer must not use a
  11276.                  truncated MX response, since this could lead to mail
  11277.                  loops.
  11278.  
  11279.                  Responsible practices can make UDP suffice in the vast
  11280.                  majority of cases.  Name servers must use compression
  11281.                  in responses.  Resolvers must differentiate truncation
  11282.                  of the Additional section of a response (which only
  11283.                  loses extra information) from truncation of the Answer
  11284.                  section (which for MX records renders the response
  11285.                  unusable by mailers).  Database administrators should
  11286.                  list only a reasonable number of primary names in lists
  11287.                  of name servers, MX alternatives, etc.
  11288.  
  11289.                  However, it is also clear that some new DNS record
  11290.                  types defined in the future will contain information
  11291.                  exceeding the 512 byte limit that applies to UDP, and
  11292.                  hence will require TCP.  Thus, resolvers and name
  11293.                  servers should implement TCP services as a backup to
  11294.                  UDP today, with the knowledge that they will require
  11295.                  the TCP service in the future.
  11296.  
  11297.             By private agreement, name servers and resolvers MAY arrange
  11298.             to use TCP for all traffic between themselves.  TCP MUST be
  11299.             used for zone transfers.
  11300.  
  11301.             A DNS server MUST have sufficient internal concurrency that
  11302.             it can continue to process UDP queries while awaiting a
  11303.             response or performing a zone transfer on an open TCP
  11304.             connection [DNS:2].
  11305.  
  11306.             A server MAY support a UDP query that is delivered using an
  11307.             IP broadcast or multicast address.  However, the Recursion
  11308.             Desired bit MUST NOT be set in a query that is multicast,
  11309.             and MUST be ignored by name servers receiving queries via a
  11310.             broadcast or multicast address.  A host that sends broadcast
  11311.             or multicast DNS queries SHOULD send them only as occasional
  11312.             probes, caching the IP address(es) it obtains from the
  11313.             response(s) so it can normally send unicast queries.
  11314.  
  11315.             DISCUSSION:
  11316.                  Broadcast or (especially) IP multicast can provide a
  11317.                  way to locate nearby name servers without knowing their
  11318.                  IP addresses in advance.  However, general broadcasting
  11319.                  of recursive queries can result in excessive and
  11320.                  unnecessary load on both network and servers.
  11321.  
  11322.  
  11323.  
  11324.  
  11325. Internet Engineering Task Force                                [Page 76]
  11326.  
  11327.  
  11328.  
  11329.  
  11330. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11331.  
  11332.  
  11333.          6.1.3.3  Efficient Resource Usage
  11334.  
  11335.             The following requirements on servers and resolvers are very
  11336.             important to the health of the Internet as a whole,
  11337.             particularly when DNS services are invoked repeatedly by
  11338.             higher level automatic servers, such as mailers.
  11339.  
  11340.             (1)  The resolver MUST implement retransmission controls to
  11341.                  insure that it does not waste communication bandwidth,
  11342.                  and MUST impose finite bounds on the resources consumed
  11343.                  to respond to a single request.  See [DNS:2] pages 43-
  11344.                  44 for specific recommendations.
  11345.  
  11346.             (2)  After a query has been retransmitted several times
  11347.                  without a response, an implementation MUST give up and
  11348.                  return a soft error to the application.
  11349.  
  11350.             (3)  All DNS name servers and resolvers SHOULD cache
  11351.                  temporary failures, with a timeout period of the order
  11352.                  of minutes.
  11353.  
  11354.                  DISCUSSION:
  11355.                       This will prevent applications that immediately
  11356.                       retry soft failures (in violation of Section 2.2
  11357.                       of this document) from generating excessive DNS
  11358.                       traffic.
  11359.  
  11360.             (4)  All DNS name servers and resolvers SHOULD cache
  11361.                  negative responses that indicate the specified name, or
  11362.                  data of the specified type, does not exist, as
  11363.                  described in [DNS:2].
  11364.  
  11365.             (5)  When a DNS server or resolver retries a UDP query, the
  11366.                  retry interval SHOULD be constrained by an exponential
  11367.                  backoff algorithm, and SHOULD also have upper and lower
  11368.                  bounds.
  11369.  
  11370.                  IMPLEMENTATION:
  11371.                       A measured RTT and variance (if available) should
  11372.                       be used to calculate an initial retransmission
  11373.                       interval.  If this information is not available, a
  11374.                       default of no less than 5 seconds should be used.
  11375.                       Implementations may limit the retransmission
  11376.                       interval, but this limit must exceed twice the
  11377.                       Internet maximum segment lifetime plus service
  11378.                       delay at the name server.
  11379.  
  11380.             (6)  When a resolver or server receives a Source Quench for
  11381.  
  11382.  
  11383.  
  11384. Internet Engineering Task Force                                [Page 77]
  11385.  
  11386.  
  11387.  
  11388.  
  11389. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11390.  
  11391.  
  11392.                  a query it has issued, it SHOULD take steps to reduce
  11393.                  the rate of querying that server in the near future.  A
  11394.                  server MAY ignore a Source Quench that it receives as
  11395.                  the result of sending a response datagram.
  11396.  
  11397.                  IMPLEMENTATION:
  11398.                       One recommended action to reduce the rate is to
  11399.                       send the next query attempt to an alternate
  11400.                       server, if there is one available.  Another is to
  11401.                       backoff the retry interval for the same server.
  11402.  
  11403.  
  11404.          6.1.3.4  Multihomed Hosts
  11405.  
  11406.             When the host name-to-address function encounters a host
  11407.             with multiple addresses, it SHOULD rank or sort the
  11408.             addresses using knowledge of the immediately connected
  11409.             network number(s) and any other applicable performance or
  11410.             history information.
  11411.  
  11412.             DISCUSSION:
  11413.                  The different addresses of a multihomed host generally
  11414.                  imply different Internet paths, and some paths may be
  11415.                  preferable to others in performance, reliability, or
  11416.                  administrative restrictions.  There is no general way
  11417.                  for the domain system to determine the best path.  A
  11418.                  recommended approach is to base this decision on local
  11419.                  configuration information set by the system
  11420.                  administrator.
  11421.  
  11422.             IMPLEMENTATION:
  11423.                  The following scheme has been used successfully:
  11424.  
  11425.                  (a)  Incorporate into the host configuration data a
  11426.                       Network-Preference List, that is simply a list of
  11427.                       networks in preferred order.  This list may be
  11428.                       empty if there is no preference.
  11429.  
  11430.                  (b)  When a host name is mapped into a list of IP
  11431.                       addresses, these addresses should be sorted by
  11432.                       network number, into the same order as the
  11433.                       corresponding networks in the Network-Preference
  11434.                       List.  IP addresses whose networks do not appear
  11435.                       in the Network-Preference List should be placed at
  11436.                       the end of the list.
  11437.  
  11438.  
  11439.  
  11440.  
  11441.  
  11442.  
  11443. Internet Engineering Task Force                                [Page 78]
  11444.  
  11445.  
  11446.  
  11447.  
  11448. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11449.  
  11450.  
  11451.          6.1.3.5  Extensibility
  11452.  
  11453.             DNS software MUST support all well-known, class-independent
  11454.             formats [DNS:2], and SHOULD be written to minimize the
  11455.             trauma associated with the introduction of new well-known
  11456.             types and local experimentation with non-standard types.
  11457.  
  11458.             DISCUSSION:
  11459.                  The data types and classes used by the DNS are
  11460.                  extensible, and thus new types will be added and old
  11461.                  types deleted or redefined.  Introduction of new data
  11462.                  types ought to be dependent only upon the rules for
  11463.                  compression of domain names inside DNS messages, and
  11464.                  the translation between printable (i.e., master file)
  11465.                  and internal formats for Resource Records (RRs).
  11466.  
  11467.                  Compression relies on knowledge of the format of data
  11468.                  inside a particular RR.  Hence compression must only be
  11469.                  used for the contents of well-known, class-independent
  11470.                  RRs, and must never be used for class-specific RRs or
  11471.                  RR types that are not well-known.  The owner name of an
  11472.                  RR is always eligible for compression.
  11473.  
  11474.                  A name server may acquire, via zone transfer, RRs that
  11475.                  the server doesn't know how to convert to printable
  11476.                  format.  A resolver can receive similar information as
  11477.                  the result of queries.  For proper operation, this data
  11478.                  must be preserved, and hence the implication is that
  11479.                  DNS software cannot use textual formats for internal
  11480.                  storage.
  11481.  
  11482.                  The DNS defines domain name syntax very generally -- a
  11483.                  string of labels each containing up to 63 8-bit octets,
  11484.                  separated by dots, and with a maximum total of 255
  11485.                  octets.  Particular applications of the DNS are
  11486.                  permitted to further constrain the syntax of the domain
  11487.                  names they use, although the DNS deployment has led to
  11488.                  some applications allowing more general names.  In
  11489.                  particular, Section 2.1 of this document liberalizes
  11490.                  slightly the syntax of a legal Internet host name that
  11491.                  was defined in RFC-952 [DNS:4].
  11492.  
  11493.          6.1.3.6  Status of RR Types
  11494.  
  11495.             Name servers MUST be able to load all RR types except MD and
  11496.             MF from configuration files.  The MD and MF types are
  11497.             obsolete and MUST NOT be implemented; in particular, name
  11498.             servers MUST NOT load these types from configuration files.
  11499.  
  11500.  
  11501.  
  11502. Internet Engineering Task Force                                [Page 79]
  11503.  
  11504.  
  11505.  
  11506.  
  11507. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11508.  
  11509.  
  11510.             DISCUSSION:
  11511.                  The RR types MB, MG, MR, NULL, MINFO and RP are
  11512.                  considered experimental, and applications that use the
  11513.                  DNS cannot expect these RR types to be supported by
  11514.                  most domains.  Furthermore these types are subject to
  11515.                  redefinition.
  11516.  
  11517.                  The TXT and WKS RR types have not been widely used by
  11518.                  Internet sites; as a result, an application cannot rely
  11519.                  on the the existence of a TXT or WKS RR in most
  11520.                  domains.
  11521.  
  11522.          6.1.3.7  Robustness
  11523.  
  11524.             DNS software may need to operate in environments where the
  11525.             root servers or other servers are unavailable due to network
  11526.             connectivity or other problems.  In this situation, DNS name
  11527.             servers and resolvers MUST continue to provide service for
  11528.             the reachable part of the name space, while giving temporary
  11529.             failures for the rest.
  11530.  
  11531.             DISCUSSION:
  11532.                  Although the DNS is meant to be used primarily in the
  11533.                  connected Internet, it should be possible to use the
  11534.                  system in networks which are unconnected to the
  11535.                  Internet.  Hence implementations must not depend on
  11536.                  access to root servers before providing service for
  11537.                  local names.
  11538.  
  11539.          6.1.3.8  Local Host Table
  11540.  
  11541.             DISCUSSION:
  11542.                  A host may use a local host table as a backup or
  11543.                  supplement to the DNS.  This raises the question of
  11544.                  which takes precedence, the DNS or the host table; the
  11545.                  most flexible approach would make this a configuration
  11546.                  option.
  11547.  
  11548.                  Typically, the contents of such a supplementary host
  11549.                  table will be determined locally by the site.  However,
  11550.                  a publically-available table of Internet hosts is
  11551.                  maintained by the DDN Network Information Center (DDN
  11552.                  NIC), with a format documented in [DNS:4].  This table
  11553.                  can be retrieved from the DDN NIC using a protocol
  11554.                  described in [DNS:5].  It must be noted that this table
  11555.                  contains only a small fraction of all Internet hosts.
  11556.                  Hosts using this protocol to retrieve the DDN NIC host
  11557.                  table should use the VERSION command to check if the
  11558.  
  11559.  
  11560.  
  11561. Internet Engineering Task Force                                [Page 80]
  11562.  
  11563.  
  11564.  
  11565.  
  11566. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11567.  
  11568.  
  11569.                  table has changed before requesting the entire table
  11570.                  with the ALL command.  The VERSION identifier should be
  11571.                  treated as an arbitrary string and tested only for
  11572.                  equality; no numerical sequence may be assumed.
  11573.  
  11574.                  The DDN NIC host table includes administrative
  11575.                  information that is not needed for host operation and
  11576.                  is therefore not currently included in the DNS
  11577.                  database; examples include network and gateway entries.
  11578.                  However, much of this additional information will be
  11579.                  added to the DNS in the future.  Conversely, the DNS
  11580.                  provides essential services (in particular, MX records)
  11581.                  that are not available from the DDN NIC host table.
  11582.  
  11583.       6.1.4  DNS USER INTERFACE
  11584.  
  11585.          6.1.4.1  DNS Administration
  11586.  
  11587.             This document is concerned with design and implementation
  11588.             issues in host software, not with administrative or
  11589.             operational issues.  However, administrative issues are of
  11590.             particular importance in the DNS, since errors in particular
  11591.             segments of this large distributed database can cause poor
  11592.             or erroneous performance for many sites.  These issues are
  11593.             discussed in [DNS:6] and [DNS:7].
  11594.  
  11595.          6.1.4.2  DNS User Interface
  11596.  
  11597.             Hosts MUST provide an interface to the DNS for all
  11598.             application programs running on the host.  This interface
  11599.             will typically direct requests to a system process to
  11600.             perform the resolver function [DNS:1, 6.1:2].
  11601.  
  11602.             At a minimum, the basic interface MUST support a request for
  11603.             all information of a specific type and class associated with
  11604.             a specific name, and it MUST return either all of the
  11605.             requested information, a hard error code, or a soft error
  11606.             indication.  When there is no error, the basic interface
  11607.             returns the complete response information without
  11608.             modification, deletion, or ordering, so that the basic
  11609.             interface will not need to be changed to accommodate new
  11610.             data types.
  11611.  
  11612.             DISCUSSION:
  11613.                  The soft error indication is an essential part of the
  11614.                  interface, since it may not always be possible to
  11615.                  access particular information from the DNS; see Section
  11616.                  6.1.3.3.
  11617.  
  11618.  
  11619.  
  11620. Internet Engineering Task Force                                [Page 81]
  11621.  
  11622.  
  11623.  
  11624.  
  11625. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11626.  
  11627.  
  11628.             A host MAY provide other DNS interfaces tailored to
  11629.             particular functions, transforming the raw domain data into
  11630.             formats more suited to these functions.  In particular, a
  11631.             host MUST provide a DNS interface to facilitate translation
  11632.             between host addresses and host names.
  11633.  
  11634.          6.1.4.3 Interface Abbreviation Facilities
  11635.  
  11636.             User interfaces MAY provide a method for users to enter
  11637.             abbreviations for commonly-used names.  Although the
  11638.             definition of such methods is outside of the scope of the
  11639.             DNS specification, certain rules are necessary to insure
  11640.             that these methods allow access to the entire DNS name space
  11641.             and to prevent excessive use of Internet resources.
  11642.  
  11643.             If an abbreviation method is provided, then:
  11644.  
  11645.             (a)  There MUST be some convention for denoting that a name
  11646.                  is already complete, so that the abbreviation method(s)
  11647.                  are suppressed.  A trailing dot is the usual method.
  11648.  
  11649.             (b)  Abbreviation expansion MUST be done exactly once, and
  11650.                  MUST be done in the context in which the name was
  11651.                  entered.
  11652.  
  11653.  
  11654.             DISCUSSION:
  11655.                  For example, if an abbreviation is used in a mail
  11656.                  program for a destination, the abbreviation should be
  11657.                  expanded into a full domain name and stored in the
  11658.                  queued message with an indication that it is already
  11659.                  complete.  Otherwise, the abbreviation might be
  11660.                  expanded with a mail system search list, not the
  11661.                  user's, or a name could grow due to repeated
  11662.                  canonicalizations attempts interacting with wildcards.
  11663.  
  11664.             The two most common abbreviation methods are:
  11665.  
  11666.             (1)  Interface-level aliases
  11667.  
  11668.                  Interface-level aliases are conceptually implemented as
  11669.                  a list of alias/domain name pairs. The list can be
  11670.                  per-user or per-host, and separate lists can be
  11671.                  associated with different functions, e.g. one list for
  11672.                  host name-to-address translation, and a different list
  11673.                  for mail domains.  When the user enters a name, the
  11674.                  interface attempts to match the name to the alias
  11675.                  component of a list entry, and if a matching entry can
  11676.  
  11677.  
  11678.  
  11679. Internet Engineering Task Force                                [Page 82]
  11680.  
  11681.  
  11682.  
  11683.  
  11684. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11685.  
  11686.  
  11687.                  be found, the name is replaced by the domain name found
  11688.                  in the pair.
  11689.  
  11690.                  Note that interface-level aliases and CNAMEs are
  11691.                  completely separate mechanisms; interface-level aliases
  11692.                  are a local matter while CNAMEs are an Internet-wide
  11693.                  aliasing mechanism which is a required part of any DNS
  11694.                  implementation.
  11695.  
  11696.             (2)  Search Lists
  11697.  
  11698.                  A search list is conceptually implemented as an ordered
  11699.                  list of domain names.  When the user enters a name, the
  11700.                  domain names in the search list are used as suffixes to
  11701.                  the user-supplied name, one by one, until a domain name
  11702.                  with the desired associated data is found, or the
  11703.                  search list is exhausted.  Search lists often contain
  11704.                  the name of the local host's parent domain or other
  11705.                  ancestor domains.  Search lists are often per-user or
  11706.                  per-process.
  11707.  
  11708.                  It SHOULD be possible for an administrator to disable a
  11709.                  DNS search-list facility.  Administrative denial may be
  11710.                  warranted in some cases, to prevent abuse of the DNS.
  11711.  
  11712.                  There is danger that a search-list mechanism will
  11713.                  generate excessive queries to the root servers while
  11714.                  testing whether user input is a complete domain name,
  11715.                  lacking a final period to mark it as complete.  A
  11716.                  search-list mechanism MUST have one of, and SHOULD have
  11717.                  both of, the following two provisions to prevent this:
  11718.  
  11719.                  (a)  The local resolver/name server can implement
  11720.                       caching  of negative responses (see Section
  11721.                       6.1.3.3).
  11722.  
  11723.                  (b)  The search list expander can require two or more
  11724.                       interior dots in a generated domain name before it
  11725.                       tries using the name in a query to non-local
  11726.                       domain servers, such as the root.
  11727.  
  11728.                  DISCUSSION:
  11729.                       The intent of this requirement is to avoid
  11730.                       excessive delay for the user as the search list is
  11731.                       tested, and more importantly to prevent excessive
  11732.                       traffic to the root and other high-level servers.
  11733.                       For example, if the user supplied a name "X" and
  11734.                       the search list contained the root as a component,
  11735.  
  11736.  
  11737.  
  11738. Internet Engineering Task Force                                [Page 83]
  11739.  
  11740.  
  11741.  
  11742.  
  11743. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11744.  
  11745.  
  11746.                       a query would have to consult a root server before
  11747.                       the next search list alternative could be tried.
  11748.                       The resulting load seen by the root servers and
  11749.                       gateways near the root would be multiplied by the
  11750.                       number of hosts in the Internet.
  11751.  
  11752.                       The negative caching alternative limits the effect
  11753.                       to the first time a name is used.  The interior
  11754.                       dot rule is simpler to implement but can prevent
  11755.                       easy use of some top-level names.
  11756.  
  11757.  
  11758.       6.1.5  DOMAIN NAME SYSTEM REQUIREMENTS SUMMARY
  11759.  
  11760.                                                |           | | | |S| |
  11761.                                                |           | | | |H| |F
  11762.                                                |           | | | |O|M|o
  11763.                                                |           | |S| |U|U|o
  11764.                                                |           | |H| |L|S|t
  11765.                                                |           |M|O| |D|T|n
  11766.                                                |           |U|U|M| | |o
  11767.                                                |           |S|L|A|N|N|t
  11768.                                                |           |T|D|Y|O|O|t
  11769. FEATURE                                        |SECTION    | | | |T|T|e
  11770. -----------------------------------------------|-----------|-|-|-|-|-|--
  11771. GENERAL ISSUES                                 |           | | | | | |
  11772.                                                |           | | | | | |
  11773. Implement DNS name-to-address conversion       |6.1.1      |x| | | | |
  11774. Implement DNS address-to-name conversion       |6.1.1      |x| | | | |
  11775. Support conversions using host table           |6.1.1      | | |x| | |
  11776. Properly handle RR with zero TTL               |6.1.2.1    |x| | | | |
  11777. Use QCLASS=* unnecessarily                     |6.1.2.2    | |x| | | |
  11778.   Use QCLASS=IN for Internet class             |6.1.2.2    |x| | | | |
  11779. Unused fields zero                             |6.1.2.3    |x| | | | |
  11780. Use compression in responses                   |6.1.2.4    |x| | | | |
  11781.                                                |           | | | | | |
  11782. Include config info in responses               |6.1.2.5    | | | | |x|
  11783. Support all well-known, class-indep. types     |6.1.3.5    |x| | | | |
  11784. Easily expand type list                        |6.1.3.5    | |x| | | |
  11785. Load all RR types (except MD and MF)           |6.1.3.6    |x| | | | |
  11786. Load MD or MF type                             |6.1.3.6    | | | | |x|
  11787. Operate when root servers, etc. unavailable    |6.1.3.7    |x| | | | |
  11788. -----------------------------------------------|-----------|-|-|-|-|-|--
  11789. RESOLVER ISSUES:                               |           | | | | | |
  11790.                                                |           | | | | | |
  11791. Resolver support multiple concurrent requests  |6.1.3.1    | |x| | | |
  11792. Full-service resolver:                         |6.1.3.1    | | |x| | |
  11793.   Local caching                                |6.1.3.1    |x| | | | |
  11794.  
  11795.  
  11796.  
  11797. Internet Engineering Task Force                                [Page 84]
  11798.  
  11799.  
  11800.  
  11801.  
  11802. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11803.  
  11804.  
  11805.   Information in local cache times out         |6.1.3.1    |x| | | | |
  11806.   Configurable with starting info              |6.1.3.1    | |x| | | |
  11807. Stub resolver:                                 |6.1.3.1    | | |x| | |
  11808.   Use redundant recursive name servers         |6.1.3.1    |x| | | | |
  11809.   Local caching                                |6.1.3.1    | | |x| | |
  11810.   Information in local cache times out         |6.1.3.1    |x| | | | |
  11811. Support for remote multi-homed hosts:          |           | | | | | |
  11812.   Sort multiple addresses by preference list   |6.1.3.4    | |x| | | |
  11813.                                                |           | | | | | |
  11814. -----------------------------------------------|-----------|-|-|-|-|-|--
  11815. TRANSPORT PROTOCOLS:                           |           | | | | | |
  11816.                                                |           | | | | | |
  11817. Support UDP queries                            |6.1.3.2    |x| | | | |
  11818. Support TCP queries                            |6.1.3.2    | |x| | | |
  11819.   Send query using UDP first                   |6.1.3.2    |x| | | | |1
  11820.   Try TCP if UDP answers are truncated         |6.1.3.2    | |x| | | |
  11821. Name server limit TCP query resources          |6.1.3.2    | | |x| | |
  11822.   Punish unnecessary TCP query                 |6.1.3.2    | | | |x| |
  11823. Use truncated data as if it were not           |6.1.3.2    | | | | |x|
  11824. Private agreement to use only TCP              |6.1.3.2    | | |x| | |
  11825. Use TCP for zone transfers                     |6.1.3.2    |x| | | | |
  11826. TCP usage not block UDP queries                |6.1.3.2    |x| | | | |
  11827. Support broadcast or multicast queries         |6.1.3.2    | | |x| | |
  11828.   RD bit set in query                          |6.1.3.2    | | | | |x|
  11829.   RD bit ignored by server is b'cast/m'cast    |6.1.3.2    |x| | | | |
  11830.   Send only as occasional probe for addr's     |6.1.3.2    | |x| | | |
  11831. -----------------------------------------------|-----------|-|-|-|-|-|--
  11832. RESOURCE USAGE:                                |           | | | | | |
  11833.                                                |           | | | | | |
  11834. Transmission controls, per [DNS:2]             |6.1.3.3    |x| | | | |
  11835.   Finite bounds per request                    |6.1.3.3    |x| | | | |
  11836. Failure after retries => soft error            |6.1.3.3    |x| | | | |
  11837. Cache temporary failures                       |6.1.3.3    | |x| | | |
  11838. Cache negative responses                       |6.1.3.3    | |x| | | |
  11839. Retries use exponential backoff                |6.1.3.3    | |x| | | |
  11840.   Upper, lower bounds                          |6.1.3.3    | |x| | | |
  11841. Client handle Source Quench                    |6.1.3.3    | |x| | | |
  11842. Server ignore Source Quench                    |6.1.3.3    | | |x| | |
  11843. -----------------------------------------------|-----------|-|-|-|-|-|--
  11844. USER INTERFACE:                                |           | | | | | |
  11845.                                                |           | | | | | |
  11846. All programs have access to DNS interface      |6.1.4.2    |x| | | | |
  11847. Able to request all info for given name        |6.1.4.2    |x| | | | |
  11848. Returns complete info or error                 |6.1.4.2    |x| | | | |
  11849. Special interfaces                             |6.1.4.2    | | |x| | |
  11850.   Name<->Address translation                   |6.1.4.2    |x| | | | |
  11851.                                                |           | | | | | |
  11852. Abbreviation Facilities:                       |6.1.4.3    | | |x| | |
  11853.  
  11854.  
  11855.  
  11856. Internet Engineering Task Force                                [Page 85]
  11857.  
  11858.  
  11859.  
  11860.  
  11861. RFC1123               SUPPORT SERVICES -- DOMAINS           October 1989
  11862.  
  11863.  
  11864.   Convention for complete names                |6.1.4.3    |x| | | | |
  11865.   Conversion exactly once                      |6.1.4.3    |x| | | | |
  11866.   Conversion in proper context                 |6.1.4.3    |x| | | | |
  11867.   Search list:                                 |6.1.4.3    | | |x| | |
  11868.     Administrator can disable                  |6.1.4.3    | |x| | | |
  11869.     Prevention of excessive root queries       |6.1.4.3    |x| | | | |
  11870.       Both methods                             |6.1.4.3    | |x| | | |
  11871. -----------------------------------------------|-----------|-|-|-|-|-|--
  11872. -----------------------------------------------|-----------|-|-|-|-|-|--
  11873.  
  11874. 1.   Unless there is private agreement between particular resolver and
  11875.      particular server.
  11876.  
  11877.  
  11878.  
  11879.  
  11880.  
  11881.  
  11882.  
  11883.  
  11884.  
  11885.  
  11886.  
  11887.  
  11888.  
  11889.  
  11890.  
  11891.  
  11892.  
  11893.  
  11894.  
  11895.  
  11896.  
  11897.  
  11898.  
  11899.  
  11900.  
  11901.  
  11902.  
  11903.  
  11904.  
  11905.  
  11906.  
  11907.  
  11908.  
  11909.  
  11910.  
  11911.  
  11912.  
  11913.  
  11914.  
  11915. Internet Engineering Task Force                                [Page 86]
  11916.  
  11917.  
  11918.  
  11919.  
  11920. RFC1123            SUPPORT SERVICES -- INITIALIZATION       October 1989
  11921.  
  11922.  
  11923.    6.2  HOST INITIALIZATION
  11924.  
  11925.       6.2.1  INTRODUCTION
  11926.  
  11927.          This section discusses the initialization of host software
  11928.          across a connected network, or more generally across an
  11929.          Internet path.  This is necessary for a diskless host, and may
  11930.          optionally be used for a host with disk drives.  For a diskless
  11931.          host, the initialization process is called "network booting"
  11932.          and is controlled by a bootstrap program located in a boot ROM.
  11933.  
  11934.          To initialize a diskless host across the network, there are two
  11935.          distinct phases:
  11936.  
  11937.          (1)  Configure the IP layer.
  11938.  
  11939.               Diskless machines often have no permanent storage in which
  11940.               to store network configuration information, so that
  11941.               sufficient configuration information must be obtained
  11942.               dynamically to support the loading phase that follows.
  11943.               This information must include at least the IP addresses of
  11944.               the host and of the boot server.  To support booting
  11945.               across a gateway, the address mask and a list of default
  11946.               gateways are also required.
  11947.  
  11948.          (2)  Load the host system code.
  11949.  
  11950.               During the loading phase, an appropriate file transfer
  11951.               protocol is used to copy the system code across the
  11952.               network from the boot server.
  11953.  
  11954.          A host with a disk may perform the first step, dynamic
  11955.          configuration.  This is important for microcomputers, whose
  11956.          floppy disks allow network configuration information to be
  11957.          mistakenly duplicated on more than one host.  Also,
  11958.          installation of new hosts is much simpler if they automatically
  11959.          obtain their configuration information from a central server,
  11960.          saving administrator time and decreasing the probability of
  11961.          mistakes.
  11962.  
  11963.       6.2.2  REQUIREMENTS
  11964.  
  11965.          6.2.2.1  Dynamic Configuration
  11966.  
  11967.             A number of protocol provisions have been made for dynamic
  11968.             configuration.
  11969.  
  11970.             o    ICMP Information Request/Reply messages
  11971.  
  11972.  
  11973.  
  11974. Internet Engineering Task Force                                [Page 87]
  11975.  
  11976.  
  11977.  
  11978.  
  11979. RFC1123            SUPPORT SERVICES -- INITIALIZATION       October 1989
  11980.  
  11981.  
  11982.                  This obsolete message pair was designed to allow a host
  11983.                  to find the number of the network it is on.
  11984.                  Unfortunately, it was useful only if the host already
  11985.                  knew the host number part of its IP address,
  11986.                  information that hosts requiring dynamic configuration
  11987.                  seldom had.
  11988.  
  11989.             o    Reverse Address Resolution Protocol (RARP) [BOOT:4]
  11990.  
  11991.                  RARP is a link-layer protocol for a broadcast medium
  11992.                  that allows a host to find its IP address given its
  11993.                  link layer address.  Unfortunately, RARP does not work
  11994.                  across IP gateways and therefore requires a RARP server
  11995.                  on every network.  In addition, RARP does not provide
  11996.                  any other configuration information.
  11997.  
  11998.             o    ICMP Address Mask Request/Reply messages
  11999.  
  12000.                  These ICMP messages allow a host to learn the address
  12001.                  mask for a particular network interface.
  12002.  
  12003.             o    BOOTP Protocol [BOOT:2]
  12004.  
  12005.                  This protocol allows a host to determine the IP
  12006.                  addresses of the local host and the boot server, the
  12007.                  name of an appropriate boot file, and optionally the
  12008.                  address mask and list of default gateways.  To locate a
  12009.                  BOOTP server, the host broadcasts a BOOTP request using
  12010.                  UDP.  Ad hoc gateway extensions have been used to
  12011.                  transmit the BOOTP broadcast through gateways, and in
  12012.                  the future the IP Multicasting facility will provide a
  12013.                  standard mechanism for this purpose.
  12014.  
  12015.  
  12016.             The suggested approach to dynamic configuration is to use
  12017.             the BOOTP protocol with the extensions defined in "BOOTP
  12018.             Vendor Information Extensions" RFC-1084 [BOOT:3].  RFC-1084
  12019.             defines some important general (not vendor-specific)
  12020.             extensions.  In particular, these extensions allow the
  12021.             address mask to be supplied in BOOTP; we RECOMMEND that the
  12022.             address mask be supplied in this manner.
  12023.  
  12024.             DISCUSSION:
  12025.                  Historically, subnetting was defined long after IP, and
  12026.                  so a separate mechanism (ICMP Address Mask messages)
  12027.                  was designed to supply the address mask to a host.
  12028.                  However, the IP address mask and the corresponding IP
  12029.                  address conceptually form a pair, and for operational
  12030.  
  12031.  
  12032.  
  12033. Internet Engineering Task Force                                [Page 88]
  12034.  
  12035.  
  12036.  
  12037.  
  12038. RFC1123            SUPPORT SERVICES -- INITIALIZATION       October 1989
  12039.  
  12040.  
  12041.                  simplicity they ought to be defined at the same time
  12042.                  and by the same mechanism, whether a configuration file
  12043.                  or a dynamic mechanism like BOOTP.
  12044.  
  12045.                  Note that BOOTP is not sufficiently general to specify
  12046.                  the configurations of all interfaces of a multihomed
  12047.                  host.  A multihomed host must either use BOOTP
  12048.                  separately for each interface, or configure one
  12049.                  interface using BOOTP to perform the loading, and
  12050.                  perform the complete initialization from a file later.
  12051.  
  12052.                  Application layer configuration information is expected
  12053.                  to be obtained from files after loading of the system
  12054.                  code.
  12055.  
  12056.          6.2.2.2  Loading Phase
  12057.  
  12058.             A suggested approach for the loading phase is to use TFTP
  12059.             [BOOT:1] between the IP addresses established by BOOTP.
  12060.  
  12061.             TFTP to a broadcast address SHOULD NOT be used, for reasons
  12062.             explained in Section 4.2.3.4.
  12063.  
  12064.  
  12065.  
  12066.  
  12067.  
  12068.  
  12069.  
  12070.  
  12071.  
  12072.  
  12073.  
  12074.  
  12075.  
  12076.  
  12077.  
  12078.  
  12079.  
  12080.  
  12081.  
  12082.  
  12083.  
  12084.  
  12085.  
  12086.  
  12087.  
  12088.  
  12089.  
  12090.  
  12091.  
  12092. Internet Engineering Task Force                                [Page 89]
  12093.  
  12094.  
  12095.  
  12096.  
  12097. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12098.  
  12099.  
  12100.    6.3  REMOTE MANAGEMENT
  12101.  
  12102.       6.3.1  INTRODUCTION
  12103.  
  12104.          The Internet community has recently put considerable effort
  12105.          into the development of network management protocols.  The
  12106.          result has been a two-pronged approach [MGT:1, MGT:6]:  the
  12107.          Simple Network Management Protocol (SNMP) [MGT:4] and the
  12108.          Common Management Information Protocol over TCP (CMOT) [MGT:5].
  12109.  
  12110.          In order to be managed using SNMP or CMOT, a host will need to
  12111.          implement an appropriate management agent.  An Internet host
  12112.          SHOULD include an agent for either SNMP or CMOT.
  12113.  
  12114.          Both SNMP and CMOT operate on a Management Information Base
  12115.          (MIB) that defines a collection of management values.  By
  12116.          reading and setting these values, a remote application may
  12117.          query and change the state of the managed system.
  12118.  
  12119.          A standard MIB [MGT:3] has been defined for use by both
  12120.          management protocols, using data types defined by the Structure
  12121.          of Management Information (SMI) defined in [MGT:2].  Additional
  12122.          MIB variables can be introduced under the "enterprises" and
  12123.          "experimental" subtrees of the MIB naming space [MGT:2].
  12124.  
  12125.          Every protocol module in the host SHOULD implement the relevant
  12126.          MIB variables.  A host SHOULD implement the MIB variables as
  12127.          defined in the most recent standard MIB, and MAY implement
  12128.          other MIB variables when appropriate and useful.
  12129.  
  12130.       6.3.2  PROTOCOL WALK-THROUGH
  12131.  
  12132.          The MIB is intended to cover both hosts and gateways, although
  12133.          there may be detailed differences in MIB application to the two
  12134.          cases.  This section contains the appropriate interpretation of
  12135.          the MIB for hosts.  It is likely that later versions of the MIB
  12136.          will include more entries for host management.
  12137.  
  12138.          A managed host must implement the following groups of MIB
  12139.          object definitions: System, Interfaces, Address Translation,
  12140.          IP, ICMP, TCP, and UDP.
  12141.  
  12142.          The following specific interpretations apply to hosts:
  12143.  
  12144.          o    ipInHdrErrors
  12145.  
  12146.               Note that the error "time-to-live exceeded" can occur in a
  12147.               host only when it is forwarding a source-routed datagram.
  12148.  
  12149.  
  12150.  
  12151. Internet Engineering Task Force                                [Page 90]
  12152.  
  12153.  
  12154.  
  12155.  
  12156. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12157.  
  12158.  
  12159.          o    ipOutNoRoutes
  12160.  
  12161.               This object counts datagrams discarded because no route
  12162.               can be found.  This may happen in a host if all the
  12163.               default gateways in the host's configuration are down.
  12164.  
  12165.          o    ipFragOKs, ipFragFails, ipFragCreates
  12166.  
  12167.               A host that does not implement intentional fragmentation
  12168.               (see "Fragmentation" section of [INTRO:1]) MUST return the
  12169.               value zero for these three objects.
  12170.  
  12171.          o    icmpOutRedirects
  12172.  
  12173.               For a host, this object MUST always be zero, since hosts
  12174.               do not send Redirects.
  12175.  
  12176.          o    icmpOutAddrMaskReps
  12177.  
  12178.               For a host, this object MUST always be zero, unless the
  12179.               host is an authoritative source of address mask
  12180.               information.
  12181.  
  12182.          o    ipAddrTable
  12183.  
  12184.               For a host, the "IP Address Table" object is effectively a
  12185.               table of logical interfaces.
  12186.  
  12187.          o    ipRoutingTable
  12188.  
  12189.               For a host, the "IP Routing Table" object is effectively a
  12190.               combination of the host's Routing Cache and the static
  12191.               route table described in "Routing Outbound Datagrams"
  12192.               section of [INTRO:1].
  12193.  
  12194.               Within each ipRouteEntry, ipRouteMetric1...4 normally will
  12195.               have no meaning for a host and SHOULD always be -1, while
  12196.               ipRouteType will normally have the value "remote".
  12197.  
  12198.               If destinations on the connected network do not appear in
  12199.               the Route Cache (see "Routing Outbound Datagrams section
  12200.               of [INTRO:1]), there will be no entries with ipRouteType
  12201.               of "direct".
  12202.  
  12203.  
  12204.          DISCUSSION:
  12205.               The current MIB does not include Type-of-Service in an
  12206.               ipRouteEntry, but a future revision is expected to make
  12207.  
  12208.  
  12209.  
  12210. Internet Engineering Task Force                                [Page 91]
  12211.  
  12212.  
  12213.  
  12214.  
  12215. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12216.  
  12217.  
  12218.               this addition.
  12219.  
  12220.               We also expect the MIB to be expanded to allow the remote
  12221.               management of applications (e.g., the ability to partially
  12222.               reconfigure mail systems).  Network service applications
  12223.               such as mail systems should therefore be written with the
  12224.               "hooks" for remote management.
  12225.  
  12226.       6.3.3  MANAGEMENT REQUIREMENTS SUMMARY
  12227.  
  12228.                                                |           | | | |S| |
  12229.                                                |           | | | |H| |F
  12230.                                                |           | | | |O|M|o
  12231.                                                |           | |S| |U|U|o
  12232.                                                |           | |H| |L|S|t
  12233.                                                |           |M|O| |D|T|n
  12234.                                                |           |U|U|M| | |o
  12235.                                                |           |S|L|A|N|N|t
  12236.                                                |           |T|D|Y|O|O|t
  12237. FEATURE                                        |SECTION    | | | |T|T|e
  12238. -----------------------------------------------|-----------|-|-|-|-|-|--
  12239. Support SNMP or CMOT agent                     |6.3.1      | |x| | | |
  12240. Implement specified objects in standard MIB    |6.3.1      | |x| | | |
  12241.  
  12242.  
  12243.  
  12244.  
  12245.  
  12246.  
  12247.  
  12248.  
  12249.  
  12250.  
  12251.  
  12252.  
  12253.  
  12254.  
  12255.  
  12256.  
  12257.  
  12258.  
  12259.  
  12260.  
  12261.  
  12262.  
  12263.  
  12264.  
  12265.  
  12266.  
  12267.  
  12268.  
  12269. Internet Engineering Task Force                                [Page 92]
  12270.  
  12271.  
  12272.  
  12273.  
  12274. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12275.  
  12276.  
  12277. 7.  REFERENCES
  12278.  
  12279.    This section lists the primary references with which every
  12280.    implementer must be thoroughly familiar.  It also lists some
  12281.    secondary references that are suggested additional reading.
  12282.  
  12283.    INTRODUCTORY REFERENCES:
  12284.  
  12285.  
  12286.    [INTRO:1] "Requirements for Internet Hosts -- Communication Layers,"
  12287.         IETF Host Requirements Working Group, R. Braden, Ed., RFC-1122,
  12288.         October 1989.
  12289.  
  12290.    [INTRO:2]  "DDN Protocol Handbook," NIC-50004, NIC-50005, NIC-50006,
  12291.         (three volumes), SRI International, December 1985.
  12292.  
  12293.    [INTRO:3]  "Official Internet Protocols," J. Reynolds and J. Postel,
  12294.         RFC-1011, May 1987.
  12295.  
  12296.         This document is republished periodically with new RFC numbers;
  12297.         the latest version must be used.
  12298.  
  12299.    [INTRO:4]  "Protocol Document Order Information," O. Jacobsen and J.
  12300.         Postel, RFC-980, March 1986.
  12301.  
  12302.    [INTRO:5]  "Assigned Numbers," J. Reynolds and J. Postel, RFC-1010,
  12303.         May 1987.
  12304.  
  12305.         This document is republished periodically with new RFC numbers;
  12306.         the latest version must be used.
  12307.  
  12308.  
  12309.    TELNET REFERENCES:
  12310.  
  12311.  
  12312.    [TELNET:1]  "Telnet Protocol Specification," J. Postel and J.
  12313.         Reynolds, RFC-854, May 1983.
  12314.  
  12315.    [TELNET:2]  "Telnet Option Specification," J. Postel and J. Reynolds,
  12316.         RFC-855, May 1983.
  12317.  
  12318.    [TELNET:3]  "Telnet Binary Transmission," J. Postel and J. Reynolds,
  12319.         RFC-856, May 1983.
  12320.  
  12321.    [TELNET:4]  "Telnet Echo Option," J. Postel and J. Reynolds, RFC-857,
  12322.         May 1983.
  12323.  
  12324.    [TELNET:5]  "Telnet Suppress Go Ahead Option," J. Postel and J.
  12325.  
  12326.  
  12327.  
  12328. Internet Engineering Task Force                                [Page 93]
  12329.  
  12330.  
  12331.  
  12332.  
  12333. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12334.  
  12335.  
  12336.         Reynolds, RFC-858, May 1983.
  12337.  
  12338.    [TELNET:6]  "Telnet Status Option," J. Postel and J. Reynolds, RFC-
  12339.         859, May 1983.
  12340.  
  12341.    [TELNET:7]  "Telnet Timing Mark Option," J. Postel and J. Reynolds,
  12342.         RFC-860, May 1983.
  12343.  
  12344.    [TELNET:8]  "Telnet Extended Options List," J. Postel and J.
  12345.         Reynolds, RFC-861, May 1983.
  12346.  
  12347.    [TELNET:9]  "Telnet End-Of-Record Option," J. Postel, RFC-855,
  12348.         December 1983.
  12349.  
  12350.    [TELNET:10] "Telnet Terminal-Type Option," J. VanBokkelen, RFC-1091,
  12351.         February 1989.
  12352.  
  12353.         This document supercedes RFC-930.
  12354.  
  12355.    [TELNET:11] "Telnet Window Size Option," D. Waitzman, RFC-1073,
  12356.         October 1988.
  12357.  
  12358.    [TELNET:12] "Telnet Linemode Option," D. Borman, RFC-1116, August
  12359.         1989.
  12360.  
  12361.    [TELNET:13] "Telnet Terminal Speed Option," C. Hedrick, RFC-1079,
  12362.         December 1988.
  12363.  
  12364.    [TELNET:14] "Telnet Remote Flow Control Option," C. Hedrick, RFC-
  12365.         1080, November 1988.
  12366.  
  12367.  
  12368.    SECONDARY TELNET REFERENCES:
  12369.  
  12370.  
  12371.    [TELNET:15] "Telnet Protocol," MIL-STD-1782, U.S. Department of
  12372.         Defense, May 1984.
  12373.  
  12374.         This document is intended to describe the same protocol as RFC-
  12375.         854.  In case of conflict, RFC-854 takes precedence, and the
  12376.         present document takes precedence over both.
  12377.  
  12378.    [TELNET:16] "SUPDUP Protocol," M. Crispin, RFC-734, October 1977.
  12379.  
  12380.    [TELNET:17] "Telnet SUPDUP Option," M. Crispin, RFC-736, October
  12381.         1977.
  12382.  
  12383.    [TELNET:18] "Data Entry Terminal Option," J. Day, RFC-732, June 1977.
  12384.  
  12385.  
  12386.  
  12387. Internet Engineering Task Force                                [Page 94]
  12388.  
  12389.  
  12390.  
  12391.  
  12392. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12393.  
  12394.  
  12395.    [TELNET:19] "TELNET Data Entry Terminal option -- DODIIS
  12396.         Implementation," A. Yasuda and T. Thompson, RFC-1043, February
  12397.         1988.
  12398.  
  12399.  
  12400.    FTP REFERENCES:
  12401.  
  12402.  
  12403.    [FTP:1]  "File Transfer Protocol," J. Postel and J. Reynolds, RFC-
  12404.         959, October 1985.
  12405.  
  12406.    [FTP:2]  "Document File Format Standards," J. Postel, RFC-678,
  12407.         December 1974.
  12408.  
  12409.    [FTP:3]  "File Transfer Protocol," MIL-STD-1780, U.S. Department of
  12410.         Defense, May 1984.
  12411.  
  12412.         This document is based on an earlier version of the FTP
  12413.         specification (RFC-765) and is obsolete.
  12414.  
  12415.  
  12416.    TFTP REFERENCES:
  12417.  
  12418.  
  12419.    [TFTP:1]  "The TFTP Protocol Revision 2," K. Sollins, RFC-783, June
  12420.         1981.
  12421.  
  12422.  
  12423.    MAIL REFERENCES:
  12424.  
  12425.  
  12426.    [SMTP:1]  "Simple Mail Transfer Protocol," J. Postel, RFC-821, August
  12427.         1982.
  12428.  
  12429.    [SMTP:2]  "Standard For The Format of ARPA Internet Text Messages,"
  12430.         D. Crocker, RFC-822, August 1982.
  12431.  
  12432.         This document obsoleted an earlier specification, RFC-733.
  12433.  
  12434.    [SMTP:3]  "Mail Routing and the Domain System," C. Partridge, RFC-
  12435.         974, January 1986.
  12436.  
  12437.         This RFC describes the use of MX records, a mandatory extension
  12438.         to the mail delivery process.
  12439.  
  12440.    [SMTP:4]  "Duplicate Messages and SMTP," C. Partridge, RFC-1047,
  12441.         February 1988.
  12442.  
  12443.  
  12444.  
  12445.  
  12446. Internet Engineering Task Force                                [Page 95]
  12447.  
  12448.  
  12449.  
  12450.  
  12451. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12452.  
  12453.  
  12454.    [SMTP:5a]  "Mapping between X.400 and RFC 822," S. Kille, RFC-987,
  12455.         June 1986.
  12456.  
  12457.    [SMTP:5b]  "Addendum to RFC-987," S. Kille, RFC-???, September 1987.
  12458.  
  12459.         The two preceding RFC's define a proposed standard for
  12460.         gatewaying mail between the Internet and the X.400 environments.
  12461.  
  12462.    [SMTP:6]  "Simple Mail Transfer Protocol,"  MIL-STD-1781, U.S.
  12463.         Department of Defense, May 1984.
  12464.  
  12465.         This specification is intended to describe the same protocol as
  12466.         does RFC-821.  However, MIL-STD-1781 is incomplete; in
  12467.         particular, it does not include MX records [SMTP:3].
  12468.  
  12469.    [SMTP:7]  "A Content-Type Field for Internet Messages," M. Sirbu,
  12470.         RFC-1049, March 1988.
  12471.  
  12472.  
  12473.    DOMAIN NAME SYSTEM REFERENCES:
  12474.  
  12475.  
  12476.    [DNS:1]  "Domain Names - Concepts and Facilities," P. Mockapetris,
  12477.         RFC-1034, November 1987.
  12478.  
  12479.         This document and the following one obsolete RFC-882, RFC-883,
  12480.         and RFC-973.
  12481.  
  12482.    [DNS:2]  "Domain Names - Implementation and Specification," RFC-1035,
  12483.         P. Mockapetris, November 1987.
  12484.  
  12485.  
  12486.    [DNS:3]  "Mail Routing and the Domain System," C. Partridge, RFC-974,
  12487.         January 1986.
  12488.  
  12489.  
  12490.    [DNS:4]  "DoD Internet Host Table Specification," K. Harrenstein,
  12491.         RFC-952, M. Stahl, E. Feinler, October 1985.
  12492.  
  12493.         SECONDARY DNS REFERENCES:
  12494.  
  12495.  
  12496.    [DNS:5]  "Hostname Server," K. Harrenstein, M. Stahl, E. Feinler,
  12497.         RFC-953, October 1985.
  12498.  
  12499.    [DNS:6]  "Domain Administrators Guide," M. Stahl, RFC-1032, November
  12500.         1987.
  12501.  
  12502.  
  12503.  
  12504.  
  12505. Internet Engineering Task Force                                [Page 96]
  12506.  
  12507.  
  12508.  
  12509.  
  12510. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12511.  
  12512.  
  12513.    [DNS:7]  "Domain Administrators Operations Guide," M. Lottor, RFC-
  12514.         1033, November 1987.
  12515.  
  12516.    [DNS:8]  "The Domain Name System Handbook," Vol. 4 of Internet
  12517.         Protocol Handbook, NIC 50007, SRI Network Information Center,
  12518.         August 1989.
  12519.  
  12520.  
  12521.    SYSTEM INITIALIZATION REFERENCES:
  12522.  
  12523.  
  12524.    [BOOT:1] "Bootstrap Loading Using TFTP," R. Finlayson, RFC-906, June
  12525.         1984.
  12526.  
  12527.    [BOOT:2] "Bootstrap Protocol (BOOTP)," W. Croft and J. Gilmore, RFC-
  12528.         951, September 1985.
  12529.  
  12530.    [BOOT:3] "BOOTP Vendor Information Extensions," J. Reynolds, RFC-
  12531.         1084, December 1988.
  12532.  
  12533.         Note: this RFC revised and obsoleted RFC-1048.
  12534.  
  12535.    [BOOT:4] "A Reverse Address Resolution Protocol," R. Finlayson, T.
  12536.         Mann, J. Mogul, and M. Theimer, RFC-903, June 1984.
  12537.  
  12538.  
  12539.    MANAGEMENT REFERENCES:
  12540.  
  12541.  
  12542.    [MGT:1]  "IAB Recommendations for the Development of Internet Network
  12543.         Management Standards," V. Cerf, RFC-1052, April 1988.
  12544.  
  12545.    [MGT:2]  "Structure and Identification of Management Information for
  12546.         TCP/IP-based internets," M. Rose and K. McCloghrie, RFC-1065,
  12547.         August 1988.
  12548.  
  12549.    [MGT:3]  "Management Information Base for Network Management of
  12550.         TCP/IP-based internets," M. Rose and K. McCloghrie, RFC-1066,
  12551.         August 1988.
  12552.  
  12553.    [MGT:4]  "A Simple Network Management Protocol," J. Case, M. Fedor,
  12554.         M. Schoffstall, and C. Davin, RFC-1098, April 1989.
  12555.  
  12556.    [MGT:5]  "The Common Management Information Services and Protocol
  12557.         over TCP/IP," U. Warrier and L. Besaw, RFC-1095, April 1989.
  12558.  
  12559.    [MGT:6]  "Report of the Second Ad Hoc Network Management Review
  12560.         Group," V. Cerf, RFC-1109, August 1989.
  12561.  
  12562.  
  12563.  
  12564. Internet Engineering Task Force                                [Page 97]
  12565.  
  12566.  
  12567.  
  12568.  
  12569. RFC1123              SUPPORT SERVICES -- MANAGEMENT         October 1989
  12570.  
  12571.  
  12572. Security Considerations
  12573.  
  12574.    There are many security issues in the application and support
  12575.    programs of host software, but a full discussion is beyond the scope
  12576.    of this RFC.  Security-related issues are mentioned in sections
  12577.    concerning TFTP (Sections 4.2.1, 4.2.3.4, 4.2.3.5), the SMTP VRFY and
  12578.    EXPN commands (Section 5.2.3), the SMTP HELO command (5.2.5), and the
  12579.    SMTP DATA command (Section 5.2.8).
  12580.  
  12581. Author's Address
  12582.  
  12583.    Robert Braden
  12584.    USC/Information Sciences Institute
  12585.    4676 Admiralty Way
  12586.    Marina del Rey, CA 90292-6695
  12587.  
  12588.    Phone: (213) 822 1511
  12589.  
  12590.    EMail: Braden@ISI.EDU
  12591.  
  12592.  
  12593.  
  12594.  
  12595.  
  12596.  
  12597.  
  12598.  
  12599.  
  12600.  
  12601.  
  12602.  
  12603.  
  12604.  
  12605.  
  12606.  
  12607.  
  12608.  
  12609.  
  12610.  
  12611.  
  12612.  
  12613.  
  12614.  
  12615.  
  12616.  
  12617.  
  12618.  
  12619.  
  12620.  
  12621.  
  12622.  
  12623. Internet Engineering Task Force                                [Page 98]
  12624.  
  12625.